用Java汇总CSV文件中的唯一货币

时间:2019-01-22 13:04:01

标签: java

我正在努力制作一个程序,该程序将为唯一的货币赚钱。我知道如何从文件中读取,但是找不到从CSV文件中求和的方法。 CSV文件如下所示(忘记将CSV文件中的第一列包含国家/地区,因此IDK(如果地图可以使用)):

EUR, 24  
EUR, 76  
YEN, 66 
YEN, 90  
USD, 87 
USD, 5

代码

File file = new File("file.csv");
Scanner reader = new Scanner(file);
ArrayList<String> rows = new ArrayList<String>();

while (reader.hasNextLine()) {
    String line = reader.nextLine();
    System.out.println(line);
    rows.add(line);
}

reader.close();

1 个答案:

答案 0 :(得分:3)

您可以将线映射到自定义Money类型,然后使用Collectors.groupingByCollectors.summingInt。假设金额为整数,则不更改求和收集器:

public class Money {
    private final String symbol;
    private final int amount;

    public Money(String line) {
        String[] values = line.split(", ");
        symbol = values[0];
        amount = Integer.parseInt(values[1]);
    }

    public String getSymbol() { return symbol; }
    public int getAmount() { return amount; }
}

public static void main(String[] args) throws Exception {
    Map<String, Integer> amounts = Files.lines(Paths.get("file.csv"))
            .map(Money::new)
            .collect(Collectors.groupingBy(Money::getSymbol, Collectors.summingInt(Money::getAmount)));
    System.out.println(amounts); // {YEN=156, EUR=100, USD=92}
}