按对象属性排序对象的ArrayList

时间:2010-07-27 10:07:58

标签: java string sorting arraylist

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

2 个答案:

答案 0 :(得分:13)

答案 1 :(得分:6)

如果您希望排序的对象的多个属性是使用GuavaOrdering类,则执行此操作的另一个好方法是更灵活一点onResultOf(Function)选项。这非常适合按属性排序,因为Function可用于检索和返回对象的特定属性。 举一个简单的例子,想象一下使用PersonString getFirstName()方法的课程String getLastName()

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

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

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

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

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

import static java.util.Comparator.comparing;
...

people.sort(comparing(Person::getLastName));