java - 对 Bean 的 Arraylist 的 Arraylist 进行排序

标签 java sorting collections

我有一个 Bean 的 ArrayListArrayList,我需要根据 date 对这个 ArrayList 进行排序Bean 中的变量。

ArrayList<ArrayList<DriverLogDatePair>> driverLogList

DriverLogDatePair bean有一个变量DateTime日期,它还有一个compareTo方法。

public int compareTo(DriverLogDatePair o) {
    return date.compareTo(o.date);
}

但我无法对 driverLogList 进行排序。

最佳答案

您必须完成此代码:

ArrayList<ArrayList<DriverLogDatePair>> driverLogList = new ArrayList<>();
Collections.sort( driverLogList, new Comparator<ArrayList<DriverLogDatePair>>(){
   @Override public int compare(
      ArrayList<DriverLogDatePair> left,
      ArrayList<DriverLogDatePair> right )
   {
      return 0;
   }});

因为第一个数组包含一个包含 Comparable 的数组。 您提供的比较器适用于 DriverLogDatePair 而不是 ArrayList< DriverLogDatePair >

(...在评论这篇文章后...)

根据您的要求,我建议完成比较器:

int size = left.size();
int diff = size - right.size();
if( diff != 0 ) return diff;
for( int i = 0; i < size; ++i ) {
   diff = left.get( i ).compareTo( right.get(i) );
   if( diff != 0 ) return diff;
}

但我不知道这种比较的真正含义。 这是一个语义问题,这真的是你想要的吗?

关于java - 对 Bean 的 Arraylist 的 Arraylist 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13154108/

相关文章:

java - java中如何生成随机整数?

c - 优化选择排序算法 (OSSA) - 如何解决?

algorithm - 是否可以按降序迭代获取数组的部分和?

Java - 泛型类型和集合

java - 为什么 Java Set 上的 ConcurrentModificationException 会转储有关 Map 迭代器的堆栈跟踪?

java - 我在使用 LibGDX TileMaps 时遇到了困难

java - Swig,将c指针转换为float[]

java - 将监听器与线程一起使用

java - 是否可以使用 forEach() 方法将列表中的所有字符串替换为其等效的大写字母?

sorting - Elasticsearch zScore 计算(合并 2 个具有不同分数分布的文档集合)