Stream流的操作及方法汇总
Stream流的操作及方法汇总
方法 作用
filter() 接收lambda,从流中排除某些操作
limit() 截断流,使其元素不超过给定对象
skip(n) 跳过元素,返回一个扔掉了前n个元素的流,若流中元素不足n个,则返回一个空流,与limit(n)互补
distinct 筛选,通过流所生成元素的hashCode()和equals去除重复元素
map 接受Lambda,将元素转换成其他形式或提取信息。接受一个函数作为参数,该函数会被应用到每个元素上,并将其映射成一个新的元素
sorted() 自然排序(Comparable)
sorted(Comparator com) 定制排序(Comparator)
allMatch 检查是否匹配所有元素
anyMatch 检查是否至少匹配一个元素
noneMatch 检查是否没有匹配所有元素
findFirst 返回第一个元素
findAny 返回当前流中的任意元素
count 返回流中元素的总个数
max 返回流中最大值
min 返回流中最小值
reduce 归约操作可以将流中元素反复结合起来,得到一个值
collect 将流转换为其他形式,接收一个Collector接口实现,用于给Stream中汇总的方法
public static void main(String[] args) { Listlist = getUserList(); list.stream().forEach(user -> System.out.println("id:"+user.getId()+",姓名:"+user.getName()+",年龄:"+user.getAge())); //getFilter(list); //getSkipLimit(list); //getDistinct(list); //; //Stream stream = list.stream().sorted(); //reduce和max和min System.out.println(list.stream().map(User::getAge).reduce(1000,Integer::sum)); System.out.println(list.stream().map(User::getAge).max(Integer::compare).get()); System.out.println(list.stream().map(User::getAge).min(Integer::compare).get()); } private static void getFindFirstAndFindAny(Listlist){ //User userModel = list.stream().filter( user -> user.getAge()>500&&user.getAge()<1000).findFirst().get(null); //orElse如果流中没有数据就返回空 User userModel = list.stream().filter( user -> user.getAge()>500&&user.getAge()<1000).findAny().orElse(null); System.out.println(userModel.toString()); } private static void getMath(List list){ //这里使用Age做匹配 //allMatch是否所有数据都满足500 //anyMatch 查看是否有一条数据是 //noneMatch 所有数据都不满足 Boolean bl = list.stream().anyMatch(user -> user.getAge()>500&&user.getAge()<1000); System.out.println(bl); if(bl){ list.stream().filter(user -> user.getAge()>500&&user.getAge()<1000).forEach(user -> System.out.println(user.toString())); } } //sorted和map private static void getSortedAndMap(List list){ Stream