我曾尝试使用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();
    }

}

07-24 09:37
查看更多