Stream流
Stream(java.util.stream.Stream)流是集合的一种增强(比如遍历,过滤),Stream方法中必须传入引用类型。
获取流(返回值为Stream):
集合名称.stream()
stream.of(数组名称)
map方法(映射)
将一个对象转换成另一个对象,把老对象映射到新对象上
ArrayList<String> list = new ArrayList();
list.add("100");
list.add("200");
list.add("300");
list.add("400");
list.add("500");
Stream stream1 = list.stream().map((String s)->{
int i = Integer.parseInt(s);
Integer inte = i;
return inte;
});
Stream stream2 = list.stream().map(s-> Integer.parseInt(s));
Stream stream3 = list.stream().map(Integer::parseInt);
上面的三个stream是简化过程,stream3是最简写的方式。实际代码中不建议直接接收,因为流会中断。
filter方法(过滤)
对流中的元素进行过滤,返回值为true的元素则留下
ArrayList<Integer> list = new ArrayList();
list.add(100);
list.add(200);
list.add(300);
list.add(400);
list.add(500);
Stream stream1 = list.stream().filter((Integer i)->{
boolean b = i>200
return b;
});
Stream stream2 = list.stream().filter(b-> b>200);
forEach方法(遍历)
在流中对元素进行遍历,forEach括号中的表达式不能产生数据结果。
ArrayList<Integer> list = new ArrayList();
list.add(100);
list.add(200);
list.add(300);
list.add(400);
list.add(500);
Stream stream1 = list.stream().forEach((Integer i)->{
System.out.println(i);
});
Stream stream2 = list.stream().forEach(i->System.out.println(i));
Stream stream3 = list.stream().forEach(System.out::println);
并发流
1.直接获取:.parallelStream()
2.普通流升级获取:.stream.parallen()
ArrayList<Integer> list = new ArrayList<>();
for (int i=0;i<100000;i++){
list.add(i);
}
long start = System.currentTimeMillis();
list.parallelStream().forEach(System.out::println);
long end = System.currentTimeMillis();
System.out.println("耗时为"+(end - start));