-Circuit端末操作
非短絡端末操作は、すべての要素がLiが終了するまで、最後まで終了し、すべてを超えているということです。彼らが望むデータを収集するために使用します。
方法は以下のとおりです。
リチウムのforeach通過
減少が低減
最大値maxの
最小値min
重合収集の
カウント数を
李のforeach回
//遍厉 forEach
@Test
public void forEachTest() {
list.stream()
.forEach(iter ->
//以json格式输出
System.out.println(
JSON.toJSONString(iter, true)));
}
//在最后的时候输出所有的sku里面的值,不做别的操作
削減は、削減します
//归约 reduce
@Test
public void reduceTest() {
//reduce可以对流里面的数值进行,求和,最大值,最小值,拼接。。
//你可以在reduce里面做任何自己想做的操作。
//下面的min,max,都是reduce的简化。
Optional<Double> reduceSum = list.stream()
.map(Sku::getSkuPrice)
.reduce(Double::sum);
System.out.println(reduceSum.get());
//11326.5
Double reduceSumTest = list.stream()
.map(Sku::getSkuPrice)
.reduce(100.00, Double::sum);
System.out.println(reduceSumTest);
//11426.5
Integer reduce = Stream.of(1, 2, 3).
reduce(4,
(integer, integer2) -> integer + integer2,
(integer, integer2) -> integer + integer2);
System.out.println(reduce);
//非并行的结果:10
//并行的结果:18,在of后面加上:parallel()
}
この問題の分析に特に良い記事があります >>
最大値max
//最大值 max
@Test
public void maxTest() {
Optional<Double> max = list.stream()
.map(Sku::getSkuPrice)
.max(Double::compareTo);
//如果的别的类型的话,也可以用别的类型里面的compareTo操作
System.out.println(max.get());
//4999.0
}
最小分
@Test
public void minTest() {
Optional<Double> min = list.stream()
.map(Sku::getSkuPrice)
.min(Double::compareTo);
//如果的别的类型的话,也可以用别的类型里面的compareTo操作
System.out.println(min.get());
//78.2
}
重合コレクト
//聚合 collect
@Test
public void collectTest() {
Stream<String> s1 = Stream.of("aa", "ab", "c", "ad");
//定义一个谓词
Predicate<String> predicate = t -> t.contains("a");
//通过自定义规则收集自己想要的数据
ArrayList<String> collect = s1.parallel().collect(() -> new ArrayList<String>(),
(array, s) -> {
if (predicate.test(s))
array.add(s);
},
(array1, array2) -> array1.addAll(array2));
collect.forEach(System.out::println);
/**
* aa
* ab
* ad
*/
//也可以用定义好的规则,比如:toList,toSet,toMap...
}
この問題の分析に特に良い記事があります >>
カウント数
//计数 count
@Test
public void countTest() {
long count = list.stream().count();
System.out.println(count);
}
されていない場合、立ち直り尋ね、個人の愚見を!