java8之Stream数据流介绍(3)
来源:互联网 发布:iphonex ar软件 编辑:程序博客网 时间:2024/04/28 09:26
XML Code
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
package com.lyzx.day03;
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.function.BinaryOperator;
import org.junit.Test;
/**
* Stream 的终止操作
* 终端操作会从流的流水线生成结果。其结果可以是任何不是流的值,例如: List、 Integer,甚至是 void
*
*/
public class T3 {
/**
* 查找与匹配
* 方 法 描 述
* allMatch(Predicate p) 检查是否匹配所有元素
* anyMatch(Predicate p) 检查是否至少匹配一个元素
* noneMatch(Predicate p) 检查是否没有匹配所有元素
* findFirst() 返回第一个元素
*/
private static List<String> data = Arrays.asList("a","b","AB","BC","ABCDEF");
@Test
public void test1(){
boolean match = data.stream()
//.sorted()
//.allMatch(item->{return item.length()>2;});
//.anyMatch(item->item.length()>2);
.noneMatch(item->item.length()>4);
System.out.println(match);
}
@Test
public void test2(){
Optional<String> first = data.stream()
//.sorted()
//.findFirst();
.findAny();
System.out.println(first.get());
}
/**
* count() 返回流中元素总数
* max(Comparator c) 返回流中最大值
* min(Comparator c) 返回流中最小值
*/
@Test
public void test3(){
long count = data.stream()
.sorted()
.count();
System.out.println(count);
}
@Test
public void test4(){
Optional<String> value = data.stream()
.sorted()
.max((x,y)->{
if(x.length()>y.length()) return 1;
if(x.length()<y.length()) return -1;
return 0;
});
System.out.println(value.get());
}
/**
* 精简,规约
* reduce(T identity, BinaryOperator<T> accumulator)
* 可以将流中元素反复结合起来,得到一个值。返回 T类型的值
* identity是一个初始值
* accumulator累加器 是一个二元操作,只有一个泛型,就是传入两个T类型的值,返回一个T类型的值
*
*/
@Test
public void test5(){
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
Integer sum = list.stream()
//0是初始值,先把0赋值给x然后把第一项赋值给给y,再计算x+y
//然后把计算出来的结果赋值给x,再把第二项赋值给y,再次计算x+y
//以此类推
.reduce(0,(x,y)->x+y);
System.out.println(sum);
}
/**
* reduce(BinaryOperator b) 可以将流中元素反复结合起来,得到一个值。返回 Optional<T>
*/
@Test
public void test6(){
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
Optional<Integer> op = list.stream()
//没有初始值,所以结果有可能为空
.reduce((x,y)->x+y);
System.out.println(op.get());
}
/**
* 计算名字中包含
*/
@Test
public void test7(){
List<Emp> emps = Arrays.asList(
new Emp("雷军",50,91.0),
new Emp("罗永浩a",45,92.0),
new Emp("黄章b",47,100.00),
new Emp("绿巨人a",9,88.0),
new Emp("蜘蛛man",28,800));
long count = emps.stream()
.mapToInt(item->{
String name = item.getName();
return (name.contains("a"))?1:0;
})
.reduce(0,(x,y)->x+y);
//也可以知己使用sum函数计算包含a的员工个数
//.sum();
System.out.println(count);
}
}
import java.util.Arrays;
import java.util.List;
import java.util.Optional;
import java.util.function.BinaryOperator;
import org.junit.Test;
/**
* Stream 的终止操作
* 终端操作会从流的流水线生成结果。其结果可以是任何不是流的值,例如: List、 Integer,甚至是 void
*
*/
public class T3 {
/**
* 查找与匹配
* 方 法 描 述
* allMatch(Predicate p) 检查是否匹配所有元素
* anyMatch(Predicate p) 检查是否至少匹配一个元素
* noneMatch(Predicate p) 检查是否没有匹配所有元素
* findFirst() 返回第一个元素
*/
private static List<String> data = Arrays.asList("a","b","AB","BC","ABCDEF");
@Test
public void test1(){
boolean match = data.stream()
//.sorted()
//.allMatch(item->{return item.length()>2;});
//.anyMatch(item->item.length()>2);
.noneMatch(item->item.length()>4);
System.out.println(match);
}
@Test
public void test2(){
Optional<String> first = data.stream()
//.sorted()
//.findFirst();
.findAny();
System.out.println(first.get());
}
/**
* count() 返回流中元素总数
* max(Comparator c) 返回流中最大值
* min(Comparator c) 返回流中最小值
*/
@Test
public void test3(){
long count = data.stream()
.sorted()
.count();
System.out.println(count);
}
@Test
public void test4(){
Optional<String> value = data.stream()
.sorted()
.max((x,y)->{
if(x.length()>y.length()) return 1;
if(x.length()<y.length()) return -1;
return 0;
});
System.out.println(value.get());
}
/**
* 精简,规约
* reduce(T identity, BinaryOperator<T> accumulator)
* 可以将流中元素反复结合起来,得到一个值。返回 T类型的值
* identity是一个初始值
* accumulator累加器 是一个二元操作,只有一个泛型,就是传入两个T类型的值,返回一个T类型的值
*
*/
@Test
public void test5(){
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
Integer sum = list.stream()
//0是初始值,先把0赋值给x然后把第一项赋值给给y,再计算x+y
//然后把计算出来的结果赋值给x,再把第二项赋值给y,再次计算x+y
//以此类推
.reduce(0,(x,y)->x+y);
System.out.println(sum);
}
/**
* reduce(BinaryOperator b) 可以将流中元素反复结合起来,得到一个值。返回 Optional<T>
*/
@Test
public void test6(){
List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
Optional<Integer> op = list.stream()
//没有初始值,所以结果有可能为空
.reduce((x,y)->x+y);
System.out.println(op.get());
}
/**
* 计算名字中包含
*/
@Test
public void test7(){
List<Emp> emps = Arrays.asList(
new Emp("雷军",50,91.0),
new Emp("罗永浩a",45,92.0),
new Emp("黄章b",47,100.00),
new Emp("绿巨人a",9,88.0),
new Emp("蜘蛛man",28,800));
long count = emps.stream()
.mapToInt(item->{
String name = item.getName();
return (name.contains("a"))?1:0;
})
.reduce(0,(x,y)->x+y);
//也可以知己使用sum函数计算包含a的员工个数
//.sum();
System.out.println(count);
}
}
阅读全文
0 0
- java8之Stream数据流介绍(3)
- java8之Stream数据流介绍(1)
- java8之Stream数据流介绍(2)
- java8之数据流Stream的Map和flatMap的区别
- Java8之Stream(3)
- Java8 stream流介绍
- Java8 Stream API介绍
- 《Java8 Stream介绍》
- Java8 Stream API介绍
- java8之Lambda表达式 3:数据流
- java8之Lambda表达式 3:数据流
- JAVA8特性之STREAM
- java8之stream
- java8之stream
- java8之Stream-API
- Java8之Stream
- Java8之Stream
- java8之Stream API
- 解决SeekBar拖动过程中thumb周围产生的圆形阴影/白色圆圈
- 数据控制—安全性控制
- 厉害了我的网 中国计划部署推进IPv6
- XTU1230 score
- 在Windows中配置Rsync同步文件的方法
- java8之Stream数据流介绍(3)
- JAVA利用list()方法在某目录下查询所有以。。结尾的文件
- STM32引脚开漏输出不能上拉到5V问题一则
- float类型,大小端,运算符,if语句
- Mysql 创建索引
- 综述:工业物联网:前景光明,机不可失
- React Native 日常报错 'config.h' file not found
- React前端开发入门与实战
- java.concurrent.BlockingDeque接口