Stream流对集合进行排序

 实体类

/**
 * @Author 王文龙
 * @Date 2019-10-24 17:44
 */
public class StreamTest {
    private Integer id;
    private Integer age;
    private String name;

    public StreamTest() {
    }

    public StreamTest(Integer id, Integer age, String name) {
        this.id = id;
        this.age = age;
        this.name = name;
    }
    // 省略 getting,setting方法
}

测试

public static void main(String[] args) throws ParseException {

        List<StreamTest> list = new ArrayList<>();
        StreamTest object  = new StreamTest(1,25,"尚佳鹏");
        StreamTest object2 = new StreamTest(3,25,"李鹏");
        StreamTest object1 = new StreamTest(2,24,"标哥");
        StreamTest object3 = new StreamTest(4,18,"姚孟");
        list.add(object);
        list.add(object1);
        list.add(object2);
        list.add(object3);
        System.err.println("1.不做任何处理的输出");
        for (StreamTest streamTest : list) {
            System.out.println(streamTest);
        }
        System.out.println("=====================================");
        System.out.println("2.倒序后的输出");
        //利用Stream流对集合数据进行倒序排序
        Collections.sort(list,(a,b) -> b.getId().compareTo(a.getId()));
        for (StreamTest streamTest : list) {
        System.err.println(streamTest);
        }
}

控制台打印结果

1.不做任何处理的输出
StreamTest{id=1, age=25, name='尚佳鹏'}
StreamTest{id=2, age=24, name='标哥'}
StreamTest{id=3, age=25, name='李鹏'}
StreamTest{id=4, age=18, name='姚孟'}
=====================================
2.按id倒序后的输出
StreamTest{id=4, age=18, name='姚孟'}
StreamTest{id=3, age=25, name='李鹏'}
StreamTest{id=2, age=24, name='标哥'}
StreamTest{id=1, age=25, name='尚佳鹏'}

注:

因为List集合是有序可重复的,默认的排序是正序,所以这里就不在演示正序的写法,如果是利用Set容器装数据的话,要对数据进行正序排序,只需要把Collections.sort(list,(a,b) -> b.getId().compareTo(a.getId()));中的b.getId()a.getId()位置对调即可,排序不光应用id,也可应用于其他整型中

猜你喜欢

转载自blog.csdn.net/qq_42227281/article/details/102740581