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

标签 java list sorting arraylist collections

我想根据 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));    

输出如下:

1 dg 98  
1 dg 58  
1 dg 38  
2 dg 90  
2 dg 68  
2 dg 48  
2 dg 28  

最佳答案

您必须实现 Comparable对于 Student 类或直接使用自定义 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

关于java - 使用java在同一程序中的升序和降序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53629791/

相关文章:

Java repaint() 在监听器中的行为与在其余代码中的行为不同

java - Java 中的带符号字节,有什么好主意?

C# DataGrid 填充了多层列表

c# - WinForm 中的 DataGridView 自定义排序

java - Swing JTable 按日期排序

java - 基于两个参数的二维数组排序

java - JTable 不会刷新

java - 在整个JFrame上添加 "global"列表器以检查字段更改

java - 转换为 JSONArray 时保持 List<LinkedHashMap<String,Object>> 顺序

Java持久化: @ManyToMany Project to List<Projects>