csdnzlw 2016-04-18 06:16 采纳率: 0%
浏览 6625

java 如何对 list 对象降序排列

package test.tool.gui.dbtool.util;  

import java.util.ArrayList;  
import java.util.Collections;  
import java.util.Comparator;  
import java.util.List;  

public class Test {  

    public static void main(String[] args) {  

        List<Student> list = new ArrayList<Student>();  

        //创建3个学生对象,年龄分别是20、19、21,并将他们依次放入List中  
        Student s1 = new Student();  
        s1.setAge(20);  
        Student s2 = new Student();  
        s2.setAge(19);  
        Student s3 = new Student();  
        s3.setAge(21);  
        list.add(s1);  
        list.add(s2);  
        list.add(s3);  

        System.out.println("排序前:"+list);  

        Collections.sort(list, new Comparator<Student>(){  

            /*  
             * int compare(Student o1, Student o2) 返回一个基本类型的整型,  
             * 返回负数表示:o1 小于o2,  
             * 返回0 表示:o1和o2相等,  
             * 返回正数表示:o1大于o2。  
             */  
            public int compare(Student o1, Student o2) {  

                //按照学生的年龄进行升序排列  
                if(o1.getAge() > o2.getAge()){  
                    return 1;  
                }  
                if(o1.getAge() == o2.getAge()){  
                    return 0;  
                }  
                return -1;  
            }  
        });   
        System.out.println("排序后:"+list);  
    }  
}  
class Student{  

    private int age;  

    public int getAge() {  
        return age;  
    }  

    public void setAge(int age) {  
        this.age = age;  
    }  
    @Override  
    public String toString() {  
        return getAge()+"";  
    }  
}  

    如何对上面代码按年龄降序排列。
  • 写回答

4条回答

  • 爱吃芒果的程序猿 2016-04-19 09:31
    关注

    集合排序问题,建议用Java的Stream来处理,是非常方便的,题主可以试试
    我直接使用你创建好的list为例举例以下代码:

    list = list.stream().sorted(Comparator.comparing(Student::getAge).reversed()).collect(Collectors.toList());

    排序就完成了,代码是很简答,很优雅的
    解释一下
    list.stream(): 是把list集合转化为stream集合
    sorted(): 进行排序,其中Comparator.comparing(Student::getAge)表示按照年纪排序,.reversed()表示是逆序,因为默认情况下,不加.reversed 是升序的
    collect(Collectors.toList()): 再次将排序后的stream集合转化为list集合

    其实不用解释,这一行代码的逻辑也是很清楚的,建议题主可以看看Java的新特性Stream,可能会对你有很大帮助,这种声明式的写法比原始的Java的命令式的写法更优雅和易懂

    评论

报告相同问题?

悬赏问题

  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?
  • ¥15 matlab(相关搜索:紧聚焦)
  • ¥15 基于51单片机的厨房煤气泄露检测报警系统设计
  • ¥15 路易威登官网 里边的参数逆向
  • ¥15 Arduino无法同时连接多个hx711模块,如何解决?
  • ¥50 需求一个up主付费课程