我曾尝试使用Scanner将文本文件读入arraylist。
假设我有一个像这样的arraylist
[A, MANBA]
[A, PGD]
[A, GUSB]
[A, GLB1]
[B, HS6ST1]
[B, NDST1]
[B, NDST4]
[C, NRP1]
[C, ZEB1]
如何计算第一个值的出现并打印出来?
作为此特定示例,输出将是
A 4
B 3
C 2
这是我到目前为止的代码。任何建议将不胜感激。
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;
public class PI_list{
public static void main (String[] args) throws FileNotFoundException
{
Scanner inputFile = new Scanner(new File("/home/tab.csv"));
while(inputFile.hasNextLine()){
String line = inputFile.nextLine();
ArrayList<String> PPIData = new ArrayList<String>();
Scanner scanner = new Scanner(line);
scanner.useDelimiter("\t");
while(scanner.hasNext()){
PPIData.add(scanner.next());
}
scanner.close();
System.out.println(PPIData);
}
inputFile.close();
}
}
最佳答案
简单的方法
public String countOccurences(String letter,List<String> array){
int counter = 0;
for(String s : array){
if(s.equals(letter))
counter++;
}
return letter + ": " + String.valueOf(counter);
}
public void getResult(List<String> array){
Set<String> setOfLetters = new HashSet<String>();
List<String> dataArray = new ArrayList<String>();
for(String s: array){
s.replace("[","");
s.replace("]","");
String tab[] = s.split(",");
setOfLetters.add(tab[0]);
dateArray.add(tab[0]);
}
for(String s: setOfLetters)
countOccurences(s,dataArray);
}
所以您的代码应该看起来像这样
public static void main (String[] args) throws FileNotFoundException
{
Scanner inputFile = new Scanner(new File("/home/tab.csv"));
while(inputFile.hasNextLine()){
String line = inputFile.nextLine();
ArrayList<String> PPIData = new ArrayList<String>();
Scanner scanner = new Scanner(line);
scanner.useDelimiter("\t");
while(scanner.hasNext()){
PPIData.add(scanner.next());
}
scanner.close();
getResult(PPIData);
System.out.println(PPIData);
}
当然可以使用我上面的方法。
合并所有课程
public class PI_list {
public static String countOccurences(String letter, List<String> array) {
int counter = 0;
for (String s : array) {
if (s.equals(letter))
counter++;
}
return letter + ": " + String.valueOf(counter);
}
public static void getResult(List<String> array) {
Set<String> setOfLetters = new HashSet<String>();
List<String> dataArray = new ArrayList<String>();
for (String s : array) {
s.replace("[", "");
s.replace("]", "");
String tab[] = s.split(",");
setOfLetters.add(tab[0]);
dataArray.add(tab[0]);
}
for (String s : setOfLetters)
System.out.println(countOccurences(s, dataArray));
}
public static void main(String[] args) throws FileNotFoundException {
Scanner inputFile = new Scanner(new File("/home/tab.csv"));
while (inputFile.hasNextLine()) {
String line = inputFile.nextLine();
ArrayList<String> PPIData = new ArrayList<String>();
Scanner scanner = new Scanner(line);
scanner.useDelimiter("\t");
while (scanner.hasNext()) {
PPIData.add(scanner.next());
}
getResult(PPIData);
System.out.println(PPIData);
}
inputFile.close();
}
}