【发布时间】:2019-09-26 14:57:36
【问题描述】:
我编写了一个代码,通过每个 String[] 的第一个元素对多维 ArrayList ArrayList<String[]> 进行排序,2dArray 如下所示:
{
["Mark", "mark@mail.com"],
["Angela", "zzAngela@gmail.com"],
["Harry", "abc_harry@hotmail.com"],
["Donald","donny@aol.com"]
}
但是当我运行代码时,数组没有得到排序,有人可以解释我的代码有什么问题吗?已经谢谢你了!
ArrayList<String[]> sorter = new ArrayList<String[]>();
String file_name = "db_email.csv";
// READING FROM CSV FILE & STORING DATA INTO 2dARRAY
try{
BufferedReader reader = new BufferedReader(new FileReader (file_name));
String line = reader.readLine(); // read the rest
String[] row;
while(line != null){
String[] result = line.split(",");
sorter.add(new String[]{result[0], result[1]});
line = reader.readLine();
}
reader.close();
} catch (IOException e){
System.out.println(e);
}
// MY SORTING ALGORITHM
Collections.sort(sorter, new Comparator<String[]>() {
@Override
public int compare(String[] o1, String[] o2) {
return o1[0].compareTo(o2[0]);
}
});
// EXPECTED RESULT (sorting 2dArray by 1st column):
{
["Angela", "zzAngela@gmail.com"],
["Donald","donny@aol.com"],
["Harry", "abc_harry@hotmail.com"],
["Mark", "mark@mail.com"]
}
// ACTUAL RESULT (the array doesn't get sorted):
{
["Mark", "mark@mail.com"],
["Angela", "zzAngela@gmail.com"],
["Harry", "abc_harry@hotmail.com"],
["Donald","donny@aol.com"]
}
【问题讨论】:
-
为什么你使用数组来存储数据,而不是为你的
ArrayList创建Person对象?你的文件内容是什么? -
当我在本地运行代码并在调用
Collections.sort()后转储“sorter”的内容时,您的代码会产生预期的结果。 -
它按预期工作。你确定在调用
sort之前没有printArrayList? -
@HieuHT 与 for 循环我再次打印
sorter,但它没有改变任何东西 -
@rgettman 我最近会重写 CSV 文件,我只是使用数组来临时存储值
标签: java sorting arraylist multidimensional-array