Java 读取csv、对两列求和、输出到新csv的程序
我已经有1-2年没有使用java了,请耐心等待。我的项目是读取包含销售数据的csv文件。文件中的数据包括“产品ID”列和“已售出单位”。我基本上必须用各自的产品ID汇总销售的单位,并将其打印出来,并将重复的产品ID打印到新的csv文件中 这是我到目前为止所做的,它读取csv并打印出数据 我基本上是在寻找答案或建议,从这里开始(不是实际的代码)。我正在考虑将每一列放入两个不同的数组,按“产品ID”排序,然后添加售出的单位Java 读取csv、对两列求和、输出到新csv的程序,java,csv,Java,Csv,我已经有1-2年没有使用java了,请耐心等待。我的项目是读取包含销售数据的csv文件。文件中的数据包括“产品ID”列和“已售出单位”。我基本上必须用各自的产品ID汇总销售的单位,并将其打印出来,并将重复的产品ID打印到新的csv文件中 这是我到目前为止所做的,它读取csv并打印出数据 我基本上是在寻找答案或建议,从这里开始(不是实际的代码)。我正在考虑将每一列放入两个不同的数组,按“产品ID”排序,然后添加售出的单位 public class ReadCSV { public static
public class ReadCSV {
public static void main(String[] args) {
ReadCSV obj = new ReadCSV();
obj.run();
}
public void run() {
String csvFile = "C:/Users/Jeff/Desktop/SalesData.csv";
BufferedReader br = null;
String line = "";
String csvSplitBy = ",";
try {
br = new BufferedReader(new FileReader(csvFile));
while ((line = br.readLine()) != null) {
// use comma as separator
String[] units = line.split(csvSplitBy);
System.out.println( units[1]+
" "+ units[2] + "");
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
System.out.println("Done");
}
}
下面是我的一些示例输出:
Product ID Units
10002 4
10004 6
10008 2
10010 3
提前谢谢你
我正在考虑将每列放入两个不同的数组中
用地图代替。您可以创建地图
。创建Product
类,如果您有多个具有唯一productId
的属性,则该类可以具有类似productId
、units
的属性。如果您不想使用map,您可以为productId
和unit
选择List
,并将每个条目添加到这两个不同的列表中
按“产品ID”排序,然后添加已售出的单位
如果您使用的是列表,则在循环后使用list.sort()
对列表进行排序。必须使用Long.parseLong
将String
(unit[0]
和units[1]
)转换为Long
对不起,我应该指定我的指令是使用数组 数组应使用fix width初始化,并保持不变,直到再次初始化引用。这是你最关心的问题。您无法确定将有多少产品,如果您的文件有固定数量的行或产品,您可以使用数组,但我仍然建议您使用内部使用数组的
List
如果只想使用数组,则必须使用较大的大小。假设您的文件中有max1000
产品,您可以将其初始化为
long productId[] = new long[1000];
最大大小数组的问题是它占用了大量内存,您应该避免这样做。我将使用下面的hashmap,然后迭代hashmap并将它们写入文件
while((line = reader.readLine()) != null){
//Split and parse to int before
if(map.get(productId) == null){
map.put(productId,units);
}
else{
map.put(productId, units + map.get(productId));
}
}
您可能会考虑使用类似的方法生成一些波霍,将数据分组在一起,这将是一个简单的问题,使用自定义<代码>比较器< /代码>进行排序。我只是想了解这一切,因为我已经有一段时间没做过了。老实说,我甚至不知道如何开始。