当前位置: 首页 > 面试题库 >

同时基于两个参数进行集合排序

邰钟展
2023-03-14
问题内容

我有一堂课,有两个日期字段说:

class TestData {
    Date activation;
    Date timeStamp;
}

我想根据activation日期对上述类别的列表进行排序,如果它们相等,则根据timestampmax(activation)和max(timeStamp)进行排序。

我尝试的代码如下所示,仅获取max(激活)

public class CollectionSort {

    public static void main(String[] args) {
        List<TestData> testList = new ArrayList<TestData>();

        Collections.sort(testList, new Comparator<TestData>() {

            @Override
            public int compare(TestData t1, TestData t2) {
                int result = 0;
                if (t1.getActivation().before(t2.getActivation())) {
                        result = 1;
                }
                return result;
            }
        });
        System.out.println("First object is " + testList.get(0));
    }
}

任何帮助将不胜感激。

谢谢


问题答案:

这样就可以了!

        Collections.sort(yourList, new Comparator<TestData>() {    
            public int compare(TestData o1, TestData o2) {
                int date1Diff = o1.getActivation().compareTo(o2.getActivation());
                return date1Diff == 0 ? 
                        o1.geTimestamp().compareTo(o2.getTimestamp()) :
                        date1Diff;
            }               
        });


 类似资料:
  • 问题内容: 假设我有两个类CLassA和CLassB。它们有一个共同的属性,例如每个类拥有的元素数量。 我如何从ClassA和CLassB的对象创建一个集合,并按该属性排序(降序升序无所谓)? 我收集了一个类型,但是当我尝试实现Comparable Interface时,我无法使用该方法(例如,获取返回元素nr的get)。 我有什么解决方案? 谢谢你的帮助! 问题答案: 实际上,如果要将它们放在同

  • 我试图使用流重构一些不那么优雅的代码。我有一个包含字符串和MyObject的HashMap,目前正在使用for循环对其进行迭代,如下所示: 因为我只关心id,所以我首先使用map操作只获取id,然后使用filter操作来消除空的id。 下一部分是我遇到的问题。我尝试的第一件事是使用Collectors groupingBy操作,这样我可以根据id的第一个字符对项目进行分组,结果是: 此链接有助于使

  • 我有以下收藏: 其中看起来像这样: 现在我必须根据字段对集合进行排序,如何实现这一点?

  • 问题内容: 更新进度条时对集合排序的最佳方法是什么?目前,我有这样的代码: 这显示进度,但是进度条随着项目数量的增加而减慢。有谁有更好的方法?理想情况下,我想使用类似于的接口,以便尝试不同的排序算法。 任何帮助将是巨大的! 作为背景,这段代码正在从Lucene撤回许多文档(1到1000万个),并在它们之上运行自定义比较器。通过将数据写回到磁盘上对它们进行排序将太慢而无法实用。大部分成本是从磁盘上读

  • 我有一只这样的熊猫 我如何根据集合(例如)中的值对其进行排序 设置顺序=('1','3','2','4') 产量 谢谢

  • 问题内容: 我有一张有5列的桌子。当我列出表时,我想按一列排序,以便将类型分组在一起,然后按字母顺序对它们进行排序,以便于查找。 是否可以通过两个不同的列? 这是我当前的选择: 我想我正在寻找的是这样的: 问题答案: 您可以通过列名或返回的列号指定ORDER BY。 因此,您可以执行以下操作: 或类似的东西: 您还可以进行升序和降序。因此,如果您想使用“类型降序”但“标题升序”: