使用java对csv文件中的唯一货币求和
我正在努力制定一个计划,为独特的货币创造价值。我知道如何读取文件,但找不到从CSV文件求和的方法。CSV文件如下所示(忘了在CSV文件中有第一列包含国家,所以IDK如果map有效): 代码使用java对csv文件中的唯一货币求和,java,Java,我正在努力制定一个计划,为独特的货币创造价值。我知道如何读取文件,但找不到从CSV文件求和的方法。CSV文件如下所示(忘了在CSV文件中有第一列包含国家,所以IDK如果map有效): 代码 File File=新文件(“File.csv”); 扫描仪阅读器=新扫描仪(文件); ArrayList行=新的ArrayList(); while(reader.hasNextLine()){ String line=reader.nextLine(); 系统输出打印项次(行); 行。添加(行); } r
File File=新文件(“File.csv”);
扫描仪阅读器=新扫描仪(文件);
ArrayList行=新的ArrayList();
while(reader.hasNextLine()){
String line=reader.nextLine();
系统输出打印项次(行);
行。添加(行);
}
reader.close();
您可以将行映射到自定义的货币类型,然后使用和。假设金额为整数,如果不更改求和收集器:
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}
}
公共类货币{
私有最终字符串符号;
私人最终整数金额;
公共资金(细线){
字符串[]值=行。拆分(“,”);
符号=值[0];
amount=Integer.parseInt(值[1]);
}
公共字符串getSymbol(){return symbol;}
public int getAmount(){return amount;}
}
公共静态void main(字符串[]args)引发异常{
映射数量=Files.line(path.get(“file.csv”))
.map(Money::new)
.collect(Collectors.groupingBy(Money::getSymbol,Collectors.summingit(Money::getAmount));
系统输出打印项次(金额);/{日元=156,欧元=100,美元=92}
}
使用映射
也许最好使用映射
,但是您的示例看起来像映射
就足够了…而不是文件。readAllLines(…).stream()
为什么不只是文件。行(…)
?
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();
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}
}