PEIYANGXINQU Ответов: 0

Как отсортировать список, у которого объект имеет более одного свойства?


Теперь я использую linq4j.Я могу сортировать только одно свойство.Как отсортировать список, у которого объект имеет более одного свойства?Если linq4j не имеет этой функции, то как насчет другого метода ?Мой код здесь:
import java.util.Arrays;
import java.util.List; 
import net.hydromatic.linq4j.Linq4j;
import net.hydromatic.linq4j.function.*;

public class Linq4jExample {
 public static class Employee {
 public final int empno;
 public final String name;
 public final int deptno;

public Employee(int empno, String name, int deptno) {
  this.empno = empno;
  this.name = name;
  this.deptno = deptno;
}

public String toString() {
  return "Employee(empno: " + empno +",name: " + name + ", deptno:" + deptno    + ")";
 }
 }

public static final Employee[] emps = {
  new Employee(100, "Fred", 10),
  new Employee(110, "Bill", 30),
  new Employee(120,  "Bill", 10),
  new Employee(120, "Eric", 12),
  new Employee(130, "Janet", 13),
};

public static final Function1<Employee, Integer> EMP_DEPTNO_SELECTOR =
  new Function1<Employee, Integer>() {
    public Integer apply(Employee employee) {
      return employee.deptno;
    }
     };

public static void main(String[] args) {

  List<Employee> filter=Linq4j.asEnumerable(Arrays.asList(emps)) 
            .orderBy(new Function1<Employee,String>()
        { 
        public String apply(Employee arg0)
        {
            return arg0.name;
        }

    }).toList();

  }
 }

Код показывает, чтобы отсортировать список по имени,но если я хочу отсортировать список по имени,а затем по deptno, как это сделать?

Что я уже пробовал:

У меня есть попытка сортировать так, но это не работает.
List<Employee> filter=Linq4j.asEnumerable(Arrays.asList(emps))
               .orderBy(new Function1<Employee,String>()
           {
           public String apply(Employee arg0)
           {
               return arg0.name;
           }

       }).orderBy(new Function1<Employee,Integer>()
           {
           public Integer apply(Employee arg0)
           {
               return arg0.deptno;
           }

       }).toList();

0 Ответов