学习任务:

视频学习

动手测试sorted()

sorted()是有状态方法,对流中的元素进行排序,支持自然排序和比较器排序,建议使用比较器排序。(自然排序和比较器排序知识请参考TreeMap知识点)

API方法如下:

Stream<T> sorted(Comparator<? super T> comparator);

测试代码如下:

	//sorted()测试,按价格降序
	public static void test_sorted() {
		//创建collection集合
		List<PbCourse> list = new ArrayList<>() ;
        list.add(new PbCourse(100L, "攀博课堂-Java面向对象教程", 33));
        list.add(new PbCourse(101L, "攀博课堂-Spring全家桶教程", 44));
        list.add(new PbCourse(101L, "攀博课堂-Spring全家桶教程", 44));
        list.add(new PbCourse(102L, "攀博课堂-SpringCloud微服务教程", 55));
        list.add(new PbCourse(103L, "攀博课堂-在线教育分布式项目教程", 66));
        list.add(new PbCourse(104L, "攀博课堂-电子商务项目教程", 66));
        list.add(new PbCourse(104L, "攀博课堂-电子商务项目教程", 66));
        //按价格降序
        Stream<PbCourse> stream = list.stream().sorted((n1,n2)->n2.getPrice()-n1.getPrice());
        //遍历新流
        stream.forEach(System.out::println);
	}

输出:

PbCourse [id=103, courseName=攀博课堂-在线教育分布式项目教程, price=66]
PbCourse [id=104, courseName=攀博课堂-电子商务项目教程, price=66]
PbCourse [id=104, courseName=攀博课堂-电子商务项目教程, price=66]
PbCourse [id=102, courseName=攀博课堂-SpringCloud微服务教程, price=55]
PbCourse [id=101, courseName=攀博课堂-Spring全家桶教程, price=44]
PbCourse [id=101, courseName=攀博课堂-Spring全家桶教程, price=44]
PbCourse [id=100, courseName=攀博课堂-Java面向对象教程, price=33]

如何实现按价格降序,价格相等的按ID降序排序呢?

//按价格降序,价格相等的按ID降序
Stream<PbCourse> stream = list.stream().sorted((n1,n2)->{
    int r = n2.getPrice()-n1.getPrice();
    return r!=0?r:(int)(n2.getId()-n1.getId());
});
提问-攀博课堂
我要提问 不会就问,有效沟通
关注公众号,加入微信群交流提问。 攀博课堂官方公众号
问答列表,查看本知识点所有问题