**JAVA Stream流常用方法介绍
1.allMatch(Predicate<? super T> predicate)
返回此流的所有元素是否与提供的谓词匹配。
public class TestDemo {
public static void main(String args[]) {
/**
* stream流练习
*/
List<String> stringList =new ArrayList<>();
stringList.add("1");
//stringList.add("2");
//stringList.add("3");
System.out.println(stringList.stream().allMatch(e -> e.equals("1")));
}
}
控制台输出 true
**2.count() **
返回此流中的元素数。
public class TestDemo {
public static void main(String args[]) {
/**
* stream流练习
*/
List<String> stringList =new ArrayList<>();
stringList.add("1");
stringList.add("2");
stringList.add("3");
System.out.println(stringList.stream().count());
}
}
控制台输出 3
**3.distinct() **
返回由该流的不同元素(根据 Object.equals(Object) )组成的流
public class TestDemo {
public static void main(String args[]) {
/**
* stream流练习
*/
List<String> stringList =new ArrayList<>();
stringList.add("1");
stringList.add("2");
stringList.add("3");
stringList.add("3");
stringList.stream().distinct().forEach(e->System.out.println(e));
}
}
``
控制台输出
1
2
3
**4.filter() **
返回由与此给定谓词匹配的此流的元素组成的流。
public class TestDemo {
public static void main(String args[]) {
/**
* stream流练习
*/
List<String> stringList =new ArrayList<>();
stringList.add("1");
stringList.add("2");
stringList.add("3");
stringList.add("3");
stringList.stream().distinct().filter(e->e.equals("2")).forEach(e->System.out.println(e));
}
}
控制台输出
2
**5.findFirst() **
返回描述此流的第一个元素的Optional如果流为空,则返回一个空的Optional 。
public class TestDemo {
public static void main(String args[]) {
/**
* stream流练习
*/
List<String> stringList =new ArrayList<>();
stringList.add("1");
stringList.add("2");
stringList.add("3");
stringList.add("3");
//stringList.stream().distinct().filter(e->e.length()==1).findFirst().forEach(e->System.out.println(e));
System.out.println(stringList.stream().distinct().filter(e->e.length()==1).findFirst().get());
}
}
控制台输出
1
**6. forEach() **
对此流的每个元素执行操作。
public class TestDemo {
public static void main(String args[]) {
/**
* stream流练习
*/
List<String> stringList =new ArrayList<>();
stringList.add("1");
stringList.add("2");
stringList.add("3");
stringList.add("3");
stringList.stream().distinct().filter(e->e.length()==1).forEach(e->System.out.println(e));
// System.out.println(stringList.stream().distinct().filter(e->e.length()==1).findFirst().get());
}
控制台输出
1
2
3
**7. limit(long maxSize) **
返回由此流的元素组成的流,截短长度不能超过 maxSize
public static void main(String args[]) {
/**
* stream流练习
*/
List<String> stringList =new ArrayList<>();
stringList.add("1");
stringList.add("2");
stringList.add("3");
stringList.add("3");
stringList.stream().distinct().limit(2).forEach(e->System.out.println(e));
// System.out.println(stringList.stream().distinct().filter(e->e.length()==1).findFirst().get());
}
控制台输出
1
2
**8. map(Function<? super T,? extends R> mapper) **
返回由给定函数应用于此流的元素的结果组成的流。
public static void main(String args[]) {
/**
* stream流练习
*/
List<String> stringList =new ArrayList<>();
stringList.add("1");
stringList.add("2");
stringList.add("3");
stringList.add("3");
;
System.out.println(stringList.stream().distinct().limit(2).map(e->Integer.parseInt(e)).count());
}
控制台输出
2
**9. MAP集合 **
public static void main(String args[]) {
/**
* stream流练习
*/
List<String> stringList =new ArrayList<>();
stringList.add("1");
stringList.add("2");
stringList.add("3");
stringList.add("3");
Map<String,String> map = new HashMap<>();
map.put("1","zhangsan");
map.put("2","lisi");
map.values().stream().forEach(e->System.out.println(e));
}
控制台输出
zhangsan
lisi
实战
两个list集合进行过滤
List<InterceptRuleVO> interceptRuleVOList = BeanCopyUtil.copyList(data, InterceptRuleVO.class);
Long zero = 0L;
if (!Objects.equals(zero, id)) {
String rule = taskProfileService.queryInterceptRule(id);
List<String> ruleList = JSONUtil.toList(rule, String.class);
interceptRuleVOList.stream()
.map(sur -> ruleList.stream()
.filter(tar -> Objects.equals(sur.getId(), tar))
.findFirst()
.map(tar -> {
sur.setSelectedStatus(1);
return sur;
}).orElse(null))
.collect(Collectors.toList());