gpt4 book ai didi

java - 按值列排序 CSV Java

转载 作者:行者123 更新时间:2023-12-02 09:59:37 25 4
gpt4 key购买 nike

我有一个由两个属性组成的 csv 文件:第一个属性为 string 类型,第二个属性为 double 类型。

从这个 csv 文件开始,我想获取另一个文件,但是,根据第二个属性的值逐渐排序。 SQL 中有一个 ORDER BY 函数,它允许根据指定的属性对数据库进行排序,我希望获得与 ORDER BY 相同的结果。

输入 CSV 文件示例:

tricolor;14.0
career;9.0
salty;1020.0
looks;208.0
bought;110.0

预期输出 CSV 文件:

career;9.0
tricolor;14.0
bought;110.0
looks;208.0
salty;1020.0

最佳答案

将 CSV 文件读入 Object[]List(CSV 文件中每行一个 Object[])

  • 数组的第一个元素是行本身(字符串)
  • 数组的第二个元素是 double 型 (a Double) 的值

所以你有以下列表:

{ 
["tricolor;14.0", 14.0],
["career;9.0", 9.0],
["salty;1020.0", 1020.0],
["looks;208.0", 208.0],
["bought;110.0", 110.0]
}

然后根据double的值进行排序

然后您可以将其写回 CSV 文件(仅写入每个数组的第一个元素)

List<Object[]> list = readFile("myFile.csv");
list.sort(Comparator.comparing(p -> (Double)p[1]));
// write to csv file, just printing it out here
list.forEach(p -> System.out.println(p[0]));

读取文件的方法:

private static List<Object[]> readFile(String fileName) {
List<Object[]> list = new ArrayList<>();
try (BufferedReader br = new BufferedReader(new FileReader(fileName))) {
String line;
String[] splitLine;

while ((line = br.readLine()) != null) {
splitLine = line.split(";");
// add an array, first element is the line itself, second element is the double value
list.add(new Object[] {line, Double.valueOf(splitLine[1])});
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}

编辑如果您想要反向顺序:

获得排序列表后,您可以使用 Collections 类上方便的 reverse 方法反转它

Collections.reverse(list);

关于java - 按值列排序 CSV Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55730678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com