按对象属性排序对象的ArrayList

我有一个物体的Arraylist。 这些对象具有属性或数据类型 – ‘String’。 我需要通过该字符串对Arraylist进行排序。 怎么做到这一点?

您需要编写Comparator并使用Collections.sort(List, ComparatorList进行排序。

或者,您的MyObject也可以implements Comparable ,定义一个比较特定属性的自然顺序 ,然后使用Collections.sort(List代替。

也可以看看

  • Java教程/对象排序

相关问题

关于各种标准的排序List

  • 对联系人的ArrayList进行排序

ComparatorComparable

  • 何时使用Comparable vs Comparator
  • compare()和compareTo()之间的区别
  • 关于null的可比较和比较者合同
  • 为什么Java Collections Framework提供了两种不同的排序方式?

如果您希望排序的对象的多个属性是使用Guava的Ordering类及其onResultOf(Function)选项,那么执行此操作的另一个好方法是更灵活。 这非常适合按属性排序,因为Function可用于检索和返回对象的特定属性。 举一个简单的例子,假设一个Person类具有String getFirstName()String getLastName()方法。

 List people = ...; Collections.sort(people, Ordering.natural().onResultOf( new Function() { public String apply(Person from) { return from.getFirstName(); } })); 

以上将按名字对列表进行排序。

为了使它更好读,您可能希望定义可能要用作Person类上的public static final字段的函数。 然后你可以像这样按姓氏排序:

 Collections.sort(people, Ordering.natural().onResultOf(Person.GET_LAST_NAME)); 

作为一个有趣的注释,在Java 8中使用lambda表达式和方法引用将会更容易。 您将能够编写类似这样的内容,而无需定义任何笨拙的匿名内部类或静态最终字段:

 import static java.util.Comparator.comparing; ... people.sort(comparing(Person::getLastName));