1.终止操作
/**
* 查找和匹配
* allMatch-检查是否匹配所有元素
* anyMatch-检查是否至少匹配一个元素
* noneMatch-检查是否没有匹配所有元素
* findFirst-返回第一个元素
* findAny-返回当前流中的任意元素
* count-返回流中元素的总个数
* max-返回流中最大值
* min-返回流中最小值
*/
/**
* 检查是否匹配元素
*/
boolean b1 = roleList.stream()
.allMatch((r) -> r.getStatus().equalsConstants.COMMON_STATUS_ERROR));
System.out.println(b1);
boolean b2 = roleList.stream()
.anyMatch((r) -> r.getStatus().equals(Constants.COMMON_STATUS_ERROR));
System.out.println(b2);
boolean b3 = roleList.stream()
.noneMatch((r) -> r.getStatus().equals(Constants.COMMON_STATUS_ERROR));
System.out.println(b3);
Optional<Role> opt = roleList.stream()
.findFirst();
System.out.println(opt.get());
// 并行流
Optional<Role> opt2 = roleList.parallelStream()
.findAny();
System.out.println(opt2.get());
long count = roleList.stream()
.count();
System.out.println(count);
Optional<Role> max = roleList.stream()
.max((r1, r2) -> Double.compare(r1.getSalary(), r2.getSalary()));
System.out.println(max.get());
Optional<Role> min = roleList.stream()
.min((r1, r2) -> Double.compare(r1.getSalary(), r2.getSalary()));
System.out.println(min.get());
2.双层for循环改用Stream
jghList.stream().forEach(jgh -> {
wrapper_.eq(SignerTmp::getPostId,jgh);
wrapper_.like(SignerTmp::getUserName,signerTmpTo.getUserName());
List<SignerTmp> signerTmps = signerTmpMapper.selectList(wrapper_);
signerTmps.stream().forEach( signerTmp -> {
SignerTmpTo sto = new SignerTmpTo();
sto.setIdNumber(signerTmp.getIdNumber());
sto.setUserName(signerTmp.getUserName());
signerTmpToList.add(sto);
});
});
3. 过滤:filter
可以用于过滤
可以通过 filter 方法将一个流转换成另一个子集流。
public static void main(String[] args) {
//创建一个流
Stream<String> stream = Stream.of("张三丰", "刘德华", "张国荣", "彭于晏", "纳什", "吴彦祖", "吴绮蓉");
//对流中元素过滤,只要姓张的人
Stream<String> stream2 = stream.filter(name -> {
return name.startsWith("张");
});
//遍历过滤后的流
stream2.forEach(name -> System.out.println(name));
}
4.映射(转换):map
如果需要将流中的元素映射到另一个流中,可以使用 map 方法。
List<CertTo> certToList = certList.stream().map(c -> {
CertTo to = new CertTo();
BeanUtils.copyBean(c, to);
return to;
}).collect(Collectors.toList());