-
丰富了对Collection (List,Set)的操作
-
Stream流中的方法分为2类
-
不能对流进行重复的操作,一次性的操作
-
中间操作
-
方法的返回值是Stream类型;
-
惰性操作,如果不碰到终止操作 就不执行
-
filter:对流中数据进行过滤
-
map:对流中数据做映射
-
limit:限制流中数据个数
-
sorted:排序
-
distinct:去重
-
-
终止操作
-
方法的返回值不是Stream类型
-
终止操作只能出现一次 而且必须在最后出现
-
count:表示统计流中对象的个数
-
reduce:合并 把流中的数据合并为一个数据
-
collect:表示收集流中的数据到 集合中
-
private static void method3() {
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(100);
arrayList.add(199);
arrayList.add(10);
arrayList.add(60);
arrayList.add(12);
//生成Stream流对象
Stream<Integer> stream1 = arrayList.stream();
//filter过滤
Stream<Integer> stream2 = stream1.filter(new Predicate<Integer>() {
// test方法如果返回值是true 表示要留下的 false表示过滤掉的
@Override
public boolean test(Integer integer) {
System.out.println(integer + " ****");
boolean b = (integer >= 60);
return b;
}
});
//map映射 把流中的数据 根据同一个规则 映射为另一个数据
Stream<Integer> stream3 = stream2.map(new Function<Integer, Integer>() {
@Override
public Integer apply(Integer integer) {
return integer * 2;
}
});
// limit限制 流中数据个数
Stream<Integer> stream4 = stream3.limit(4);
// sorted排序
Stream<Integer> stream5 = stream4.sorted();
//distinct去重 去除重复的数据对象
Stream<Integer> stream6 = stream5.distinct();
//collect() 表示收集流中的数据
/*List<Integer> list = stream6.collect(Collectors.toList());
System.out.println(list);*/
//count() 表示统计流中对象的个数
// System.out.println(stream2.count());
//reduce 合并 把流中的数据合并为一个数据
Optional<Integer> reduce = stream6.reduce(new BinaryOperator<Integer>() {
@Override
public Integer apply(Integer integer, Integer integer2) {
return integer + integer2;
}
});
System.out.println(reduce.get());
System.out.println(arrayList);
}
public static void main(String[] args) {
ArrayList<Integer> arrayList = new ArrayList<>();
arrayList.add(100);
arrayList.add(199);
arrayList.add(10);
arrayList.add(60);
arrayList.add(12);
System.out.println(arrayList.stream().filter((item) -> {
return item >= 60;
}).map((item) -> {
return item * 2;
}).limit(4).sorted().distinct().reduce((a, b) -> {
return a + b;
}).get());
}