按对象属性排序对象的ArrayList

Vis*_*hal 7 java sorting string arraylist

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

Col*_*inD 6

这样做,这是一个更灵活一点,如果有一个对象,你不妨排序的多个属性的另一个好方法是使用番石榴订货类及其onResultOf(Function)选项.这非常适合按属性排序,因为Function可用于检索和返回对象的特定属性.举一个简单的例子,想象一个Person带有String getFirstName()String getLastName()方法的类.

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

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

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

Collections.sort(people, Ordering.natural().onResultOf(Person.GET_LAST_NAME));
Run Code Online (Sandbox Code Playgroud)

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

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

people.sort(comparing(Person::getLastName));
Run Code Online (Sandbox Code Playgroud)