目录
聚合操作介绍
定义:集合lambda表达式简化了数组、集合中的元素查找和过滤等操作。
案例:筛选姓氏“郭”出现的次数,并打印输出。
方法:stream( ) 将集合对象转为流对象
StartsWith( ) 筛选开头为“郭”的元素
limit( ) 截至“郭”出现的次数
filter( )过滤
public static void main(String[] args) {
ArrayList<String> list = new ArrayList<>();
list.add("郭大");
list.add("刘mag");
list.add("郭二");
list.add("李桑");
list.stream().filter((String s)->{return s.startsWith("郭");}).limit(2).forEach((String s)-> System.out.println(s));
}
//结果 郭大
郭二
创建Stream( )流对象
定义:将集合、数组通过一些方法转换为Stream流对象
方法:
Collection可以使用Stream( )流对象
Stream( ).of 获取Stream流对象
Array.stream( )流对象
public static void main(String[] args) {
// 1.
ArrayList<String> list = new ArrayList<>();
Stream<String> stream = list.stream(); // 转为流对象
// 2.
Integer [] arr2 = new Integer[6];
Stream<Integer> integerStream = Stream.of(arr2); // 转为流对象
arr2[0] = 15;
// 3.
int [] arr = {15,65,2};
Arrays.stream(arr); //转为流对象
}
案例:截取集合中的字符串
public static void main(String[] args) {
ArrayList<Object> list = new ArrayList<>();
list.add("核潜艇");
list.add("轰炸机");
list.add("巡洋舰");
list.stream().skip(0).limit(2).forEach((Object a)-> System.out.println(a));
}
// 核潜艇
轰炸机
Parallel Stream(并行流)
串行流的定义:将集合或数组转换成一个流对象
并行流的定义:将集合或数组分为多个流对象进行多线程操作,最后将结果汇总到一个流对象。
方法:
Stream( ) 转为串行流
parllel( ) 转为并行流 (此方法先转为串行流,才能使用)
parallelStream( )转为并行流
isparllel( ) 判断是否为并行流,是返回true,不是返回false
public static void main(String[] args) {
ArrayList<Object> list = new ArrayList<>();
list.add("核潜艇");
list.add("轰炸机");
list.add("巡洋舰");
Stream<Object> stream = list.stream(); //转为并行流
Stream<Object> parallel = list.stream().parallel(); // 转为并行流
Stream<Object> objectStream = list.parallelStream(); // 转为并行流
boolean parallel1 = list.stream().isParallel(); // 判断是否并行流
}