主要涉及方法:distinct、skip和limit、map、flatMap、filter方法
实体类参见:https://blog.csdn.net/qq_27255679/article/details/89091534
map(对list执行代码逻辑,返回新的指定类型的list流)
List<String> phoneList = list.stream().map(Student::getPhone).collect(Collectors.toList());
System.out.println(phoneList);
flatMap(返回一个流,该流包含将此流的每个元素替换为通过将提供的映射函数应用于每个元素而生成的映射流的内容的结果)
List<String> phoneList = list.stream().flatMap(student -> Stream.of(student.getPhone().split("-"))).collect(Collectors.toList());
/**将List<List<Map<String,String>>> listList转化为 List<Map<String,String>> maps*/
List<Map<String,String>> maps = listList.stream().flatMap(Collection::stream).collect(Collectors.toList());
如果在手机号码里面加上一个-,打印的phoneList将变长
filter(返回一个包含此流元素的数组,使用提供的generator函数分配返回的数组,以及分区执行或调整大小可能需要的任何其他数组)
List<Student> phoneList = list.stream().filter(student -> student.getPhone().length()==11).collect(Collectors.toList());
返回结果是对phone筛选后的结果
distinct
/**
*API注意:
*保持distinct()并行管道的稳定性相对昂贵(要求操作充当完全屏障,具有大量缓冲开销),并且通常不需要
*稳定性。如果您的情境的语义允许,使用无序流源(如generate(Supplier))或删除排序约束
*BaseStream.unordered()可能会导致distinct()并行管道的执行效率显着提高。如果需要与遇到顺序的一致
*性,并且您distinct()在并行管道中遇到性能不佳或内存利用率,则切换到顺序执行
*BaseStream.sequential()可能会提高性能。
*/
skip
/**
*API注意:
*虽然skip()在顺序流管道上通常是一种廉价的操作,但在有序的并行管道上它可能相当昂贵,特别是对于较大
*的值n,因为它skip(n) 被限制为不仅跳过任何n个元素,而是跳过遇到顺序中的 前n个元素。如果您的情境的
*语义允许,使用无序流源(如generate(Supplier))或删除排序约束BaseStream.unordered()可能会导致
*skip()并行管道的显着加速。如果需要与遇到顺序的一致性,并且您skip()在并行管道中遇到性能不佳或内存
*利用率 ,则切换到顺序执行BaseStream.sequential()可能会提高性能。
*/
limit
/**
*API注意:
*虽然limit()在顺序流管道上通常是一种廉价操作,但在有序并行流水线上它可能相当昂贵,特别是对于较大
*的值maxSize,因为limit(n) 约束不仅返回任何n个元素,而是返回遭遇顺序中的 前n个元素。如果您的情境
*的语义允许,使用无序流源(如generate(Supplier))或删除排序约束BaseStream.unordered()可能会导
*致limit()并行管道的显着加速。如果需要与遇到顺序的一致性,并且您limit()在并行管道中遇到性能不佳
*或内存利用率 ,则切换到顺序执行BaseStream.sequential()可能会提高性能。
*/

1333

被折叠的 条评论
为什么被折叠?



