gpt4 book ai didi

java - 将 ArrayList> 作为行字段排序

转载 作者:行者123 更新时间:2023-12-01 18:16:37 26 4
gpt4 key购买 nike

我有一个函数可以读取 CSV 文件,并在经过一些处理后将数据放入 ArrayList<ArrayList<String>> .

所以我有这个:

  ArrayList = list of rows
sub-ArrayList<String> = list of columns

现在我必须这样做(我猜java的方法是使用Comparator ): 我需要根据每个字段的字符串值对这些行进行排序。

例如,如果我有行(其中每个字段都是 ArrayList<ArrayList<String>> 结构中的最终字符串):

Name|Birthdate|FathersName
John,2001-01-01,Steven
John,2001-01-01,Albert

排序操作应该反转这两行(因为前 2字段相等,因此第三个字段决定顺序)。

任何有关如何执行此操作的提示将不胜感激。

答案:Arnaud Denoyelle 的回答让我找到了以下通用解决方案

private Comparator<List<String>> comparator = new Comparator<List<String>>() {
@Override
public int compare(List<String> list1, List<String> list2) {
int size = list1.size();
int diff = 0;
for (int i=0; i<size; i++) {
diff = list1.get(i).compareTo(list2.get(i));
if (diff != 0) {
break;
}
}
return diff;
}
};

注意:这假设被比较的行具有相同的列数,在我的例子中这是一个有效的假设。

最佳答案

您想使用comparators 。另一方面,如果您的列始终相同且固定数字(如您的示例中所示),则可以创建 class Person ,扩展 Comparable 并有 ArrayList<Person>一般来说哪个更好。特别是例如,如果您希望这些日期是实际的 Date对象而不是Strings .

关于java - 将 ArrayList<ArrayList<String>> 作为行字段排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29143472/

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