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

使用2个条件对Java中的列表进行排序

幸经艺
2023-03-14
问题内容

我有一个对象列表。每个对象都包含a String和a Date(以及其他)。

我想先按排序String,然后按排序Date

如何以最干净的方式做到这一点?

谢谢!

马耳他


问题答案:

给定一个对象类,如下所示:

public class MyObject {
    public String getString() { ... }
    public Date getDate() { ... }
    ...
}

编写一个自定义比较器类,如下所示:

public class ObjectComparator implements Comparator{

    public int compare(Object obj1, Object obj2) {
        MyObject myObj1 = (MyObject)obj1;
        MyObject myObj2 = (MyObject)obj2;
        stringResult = myObj1.getString().compareTo(myObj2.getString());
        if (stringResult == 0) {
            // Strings are equal, sort by date
            return myObj1.getDate().compareTo(myObj2.getDate());
        }
        else {
            return stringResult;
        }
    }
}

然后排序如下:

Collections.sort(objectList, new ObjectComparator());


 类似资料:
  • 问题内容: 我在Python中有两个列表 我想对第一个列表进行排序,并使用结果对第二个列表进行排序。 换句话说,结果应为: 我知道如何分别对每个列表进行排序,但是如何使用对另一个列表进行排序所产生的索引排列来对一个列表进行排列呢? 问题答案: 施瓦兹变换

  • 我对从流中排序列表感兴趣。这是我正在使用的代码: 我是不是漏了什么?之后不会对列表进行排序。 它应该根据最低值的项目对列表进行排序。 以及打印方法:

  • 问题内容: 我有兴趣对流中的列表进行排序。这是我正在使用的代码: 我想念什么吗?列表未排序。 它应该根据具有最低值的项目对列表进行排序。 以及打印方法: 问题答案: 这与对参数引用进行排序的地方不同。在这种情况下,您将得到一个排序后的流,最终需要将其收集并分配给另一个变量: 您只是错过了分配结果

  • 我有一个这样的方法: 此方法需要以如下字符串形式返回3个最昂贵项目的产品ID:“item1,item2,item3”。我应该只能使用溪流,我被困在这里了。我应该能够按值对项目进行排序,然后获得产品ID,但我似乎无法使其正常工作。 编辑: 产品ID位于入口类中

  • 问题内容: 我有一个包含Quote对象的数组列表。我希望能够按名称,更改和更改百分比的字母顺序进行排序。如何排序我的数组列表? 问题答案: 创建一个合适的对象,它将根据你所需的条件比较两个项目。然后在你的上使用 。 如果以后要按其他条件排序,请使用不同的再次调用。