stream 使用示例
*************************
中间操作:peek、map比较
peek:无返回值
map:将流中元素转换为新的值返回
public class StreamTest {
public static void main(String[] args){
List<String> list=new ArrayList<>();
list.add("1");
list.add("2");
list.add("3");
list.stream().peek(i->{
System.out.println("peek中输出的值:"+i);
}).forEach(i->{
System.out.println("peek foreach中输出的值:"+i);
});
System.out.println("\n*****************************\n");
list.stream().map(i->i+2).forEach(i->{
System.out.println("map foreach中输出的值:"+i);
});
}
}
******************
控制台输出
peek中输出的值:1
peek foreach中输出的值:1
peek中输出的值:2
peek foreach中输出的值:2
peek中输出的值:3
peek foreach中输出的值:3
*****************************
map foreach中输出的值:12
map foreach中输出的值:22
map foreach中输出的值:32
*************************
中间操作:map、flatMap比较
map:将流中元素转换为新的值返回
flatMap:将流中的每个元素都转换为流,最后将所有的流归并为一个流
public class StreamTest2 {
public static void main(String[] args){
List<String> list = new ArrayList<>();
list.add("123");
list.add("456");
list.add("789");
System.out.println("map操作输出:");
List<Stream<String>> result = list.stream().map(i -> Stream.of(i.split(""))).collect(Collectors.toList());
result.forEach(stream -> {
stream.collect(Collectors.toList()).forEach(System.out::print);
System.out.println();
});
System.out.println("\nflatMap操作输出:");
List<String> result2 = list.stream().flatMap(i -> Stream.of(i.split(""))).collect(Collectors.toList());
result2.forEach(System.out::print);
}
}
******************
控制台输出
map操作输出:
123
456
789
flatMap操作输出:
123456789
*************************
String集合转换为Integer集合
public class StreamTest3 {
public static void main(String[] args){
List<String> list=new ArrayList<>();
list.add("12");
list.add("23");
list.add("65");
List<Integer> l=list.stream().map(Integer::valueOf).collect(Collectors.toList());
l.forEach(System.out::println);
}
}
******************
控制台输出
12
23
65
*************************
collect 分组操作
public class StreamTest4 {
public static void main(String[] args){
List<String> list=new ArrayList<>();
list.add("12");
list.add("8");
list.add("6");
list.add("6");
list.add("9");
list.add("29");
list.add("23");
list.add("36");
list.add("38");
list.add("89");
Map<Boolean,List<Integer>> map= list.stream().map(Integer::valueOf).collect(Collectors.groupingBy(i->i>20));
for(Boolean b: map.keySet()){
System.out.println(b+" "+map.get(b));
}
}
}
******************
控制台输出
false [12, 8, 6, 6, 9]
true [29, 23, 36, 38, 89]