使用java在同一程序中升序和降序

cod*_*123 6 java sorting collections list arraylist

我想根据id和标记对对数据进行排序.ID应按升序排列,标记应按降序排列,这是我的代码:

ArrayList<Student> al=new ArrayList<Student>();
    al.add(new Student(1,"dg",58));
    al.add(new Student(2,"dg",48));
    al.add(new Student(1,"dg",98));
    al.add(new Student(2,"dg",68));
    al.add(new Student(1,"dg",38));
    al.add(new Student(2,"dg",28));
    al.add(new Student(2,"dg",90));    
Run Code Online (Sandbox Code Playgroud)

输出如:

1 dg 98  
1 dg 58  
1 dg 38  
2 dg 90  
2 dg 68  
2 dg 48  
2 dg 28  
Run Code Online (Sandbox Code Playgroud)

Nik*_*las 7

您必须ComparableStudent类实现或使用自定义直接对其进行排序Comparator:

Comparator<Student> comparator = Comparator
    .comparing(Student::getId)                            // First ID in ascending order
    .thenComparing(Comparator.comparing(Student::getMark) // Then mark 
                             .reversed());                // ... but in descending order

al.sort(comparator);                                      // Here is the sort performed
Run Code Online (Sandbox Code Playgroud)


ven*_*kat 3

尝试这个

 Collections.sort(al,(s1,s2)->{

            return s1.id<s2.id?-1:s1.id>s2.id?1:s1.marks>s2.marks?-1:0;
        });
        al.forEach(p->{
            System.out.println(p);
        });
Run Code Online (Sandbox Code Playgroud)