一、Stream流是什么?
Stream流是Java 8中的一个新特性,它提供了一种处理集合和数组的方式。Stream流可以让我们以一种更加简洁、高效、可读性更强的方式来处理数据。Stream流可以用于过滤、映射、排序、聚合等操作,它可以让我们避免使用循环和条件语句来处理数据,从而让代码更加简洁易懂。Stream流的操作可以分为中间操作和终止操作两种类型,中间操作返回的是一个新的Stream流,终止操作返回的是一个非Stream类型的结果。Stream流的处理是惰性求值的,只有在执行终止操作时才会开始处理数据。
流(Stream)是一种基于支持一次性处理数据的数据源的元素序列,流只能使用一次。
流的设计初衷是为了支持函数式编程,它的目的是将数据处理和数据存储分离开来,使得数据处理更加灵活和高效。因此,流的元素只是在流中传递的临时数据,它们并不是永久存储在内存中的数据。当流的元素被消费后,它们就会被释放,不能再次使用.
如果需要对同一个数据集进行多次不同的操作,可以使用流的中间操作方法来构建多个流管道,每个流管道都可以对流进行不同的操作,并返回一个新的流。这样就可以对同一个数据集进行多次操作,而不需要重新获取数据集。
二、代码示例
List<Peson> pesonList = new ArrayList<>();
Peson peson = new Peson();
peson.setXiao("98.9%");
peson.setKnag("kag");
peson.setAge(1);
Peson peson1 = new Peson();
peson1.setXiao("97.9%");
peson1.setKnag("kag");
peson1.setAge(2);
Peson peson2 = new Peson();
peson2.setXiao("99.9%");
peson2.setKnag("kag");
peson2.setAge(3);
Peson peson3 = new Peson();
peson3.setXiao("99.9%");
peson3.setKnag("kag");
peson3.setAge(3);
pesonList.add(peson);
pesonList.add(peson1);
pesonList.add(peson2);
pesonList.add(peson3);
System.out.println("排序前->"+pesonList);
pesonList.sort(((o1, o2) -> {
Double d1 = Double.parseDouble(o1.getXiao().split("%")[0]);
Double d2 = Double.parseDouble(o2.getXiao().split("%")[0]);
//降序
return d2.compareTo(d1);
//升序
return d1.compareTo(d2);
}));
System.out.println("排序后->"+pesonList);
}
结果:
排序前->[Peson{xiao='98.9%', knag='kag', age=1}, Peson{xiao='97.9%', knag='kag', age=2}, Peson{xiao='99.9%', knag='kag', age=3}, Peson{xiao='99.9%', knag='kag', age=3}]
排序后->[Peson{xiao='99.9%', knag='kag', age=3}, Peson{xiao='99.9%', knag='kag', age=3}, Peson{xiao='98.9%', knag='kag', age=1}, Peson{xiao='97.9%', knag='kag', age=2}]