我正在努力制作一个程序,该程序将为唯一的货币赚钱。我知道如何从文件中读取,但是找不到从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();
答案 0 :(得分:3)
您可以将线映射到自定义Money
类型,然后使用Collectors.groupingBy
和Collectors.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}
}