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

Java使用比较器降序排序(用户定义的类)

谭新知
2023-03-14
问题内容

我想使用比较器按降序对对象进行排序。

class Person {
 private int age;
}

在这里,我想对一个Person对象数组进行排序。

我怎样才能做到这一点?


问题答案:

你可以使用这种方法来覆盖用户定义的类的降序方法,从而覆盖compare()方法,

Collections.sort(unsortedList,new Comparator<Person>() {
    @Override
    public int compare(Person a, Person b) {
        return b.getName().compareTo(a.getName());
    }
});

或通过使用Collection.reverse()用户Prince在其评论中提到的降序进行排序。

你可以像这样进行升序排序,

Collections.sort(unsortedList,new Comparator<Person>() {
    @Override
    public int compare(Person a, Person b) {
        return a.getName().compareTo(b.getName());
    }
});

我们用简洁的Lambda表达式(从Java 8开始)替换上面的代码:

Collections.sort(personList, (Person a, Person b) -> b.getName().compareTo(a.getName()));

从Java 8开始,List具有sort()方法,该方法将Comparator作为参数(更简洁):

personList.sort((a,b)->b.getName().compareTo(a.getName()));

在这里ab通过lambda表达式推断为Person类型。



 类似资料:
  • 问题内容: 我想为汽车清单开发一个排序演示。我正在使用数据表显示汽车列表。现在实际上我想按汽车颜色对列表进行排序。这里不是按字母顺序排序的。我想使用我的自定义排序顺序,例如先是红色汽车,然后是蓝色,等等。 为此,我尝试使用,但它只允许按字母顺序排序。 因此,任何人都可以指导我实现使用该技术的方法,以便使排序变得更快。 问题答案: 我建议你为汽车颜色创建一个枚举,而不要使用字符串,并且枚举的自然顺序

  • 让我们假设我有一个类,它不实现,还有一个类,它实现。 使用AssertJ的fluent API,我现在假设可以执行以下操作: 由于不实现可比,将返回类型,并且由于也返回,所以我无法访问和方法,这些方法在接口中声明。 'only'返回而不返回有什么原因吗? 当然,我可以按照的内容重写上面的断言,但是表达式本身并不特别易读,而且如果出现故障,生成的消息('expected:<-1>大于:<0>)不会提

  • 问题内容: 是否有Java开源比较器可以按多个字段比较bean以进行多列排序?每列可以按升序或降序排序。 对于单列排序,可以与一起使用。 我知道编写此功能非常简单,但是如果已经编写并测试过轮子,那么重新发明轮子有什么好处? 问题答案: 我是几个月前写的。 只需从此类继承并重写doCompare-Method。然后使用设置链中的下一个比较器。比较器在此链中出现的越早,就越“重要”。 编辑: 另请参阅

  • 我有一个程序可以对计算机的某个目录中的文件进行排序。我正在使用比较器接口和Collections.Sort-方法,但我无法访问调用类的输出。我也不知道如何在Sort-class中对对象进行排序。 1)如果有人能告诉我如何使用compare-method(prototyp是:sort(List List,Comparator c)我会很高兴

  • 我必须写一个程序 > 使用一个类ShopItem,其中一个项目的属性是:barCodeNumber、itemName、price和QuantityInStock。创建5个ShopItems实例(item1、item2、item3、item4和item5)的属性值为我自己的值。 为ShopItem使用一个比较器(BarcodeParator),它允许基于它们的barCodeNumber对ShopIt

  • 如何使用Comparator对对象的ArrayList进行正确排序,然后将排序后的数组传递给自定义数组适配器? 我试过这样做: ArrayList的内容类: 比较器: 在OnCreate中设置适配器: ...因为我使用的是定制的ArrayAdapter,就像: 我需要如何修改此适配器以使其与其他适配器一起工作? 谢谢你的帮助。