工厂方法:toList /toSet
返回类型:List<T>/Set<T>
作用:把流中所有项目收集到一个 List/Set
使用示例: List<Dish> dishes = menuStream.collect(toList());
工厂方法: toCollection
返回类型:Collection<T>
作用:把流中所有项目收集到给定的供应源创建的集合
使用示例: Collection<Dish> dishes = menuStream.collect(toCollection(),ArrayList::new);
工厂方法:counting
返回类型:Long
作用:计算流中元素的个数
使用示例: long howManyDishes = menuStream.collect(counting());
工厂方法:summingInt /averagingInt
返回类型:Integer/double
作用:对流中项目的一个整数属性求和/求平均值
使用示例: int totalCalories =menuStream.collect(summingInt(Dish::getCalories));
工厂方法:joining
返回类型:String
作用:连接对流中每个项目调用 toString 方法所生成的字符串
使用示例: String shortMenu =menuStream.map(Dish::getName).collect(joining(", "));
工厂方法:minBy/maxBy
返回类型:Optional<T>
作用:一个包裹了流中按照给定比较器选出的最大/最小元素的 Optional ,或如果流为空则为 Optional.empty()
使用示例:Optional<Dish> fattest =menuStream.collect(maxBy(comparingInt(Dish::getCalories)));
工厂方法:reducing
返回类型:归约操作产生的类型
作用:从一个作为累加器的初始值开始,利用 BinaryOperator 与流中的元素逐个结合,从而将流归约为单个值。
使用示例: int totalCalories =menuStream.collect(reducing(0, Dish::getCalories, Integer::sum));
工厂方法:groupingBy
返回类型:Map<K, List<T>>
作用:根据项目的一个属性的值对流中的项目作问组,并将属性值作为结果 Map 的键
使用示例: Map<Dish.Type,List<Dish>> dishesByType =menuStream.collect(groupingBy(Dish::getType));
工厂方法:partitioningBy
返回类型:Map<Boolean,List<T>>
作用:根据对流中每个项目应用谓词的结果来对项目进行分区(只有true和false两个区)
使用示例: Map<Boolean,List<Dish>> vegetarianDishes =
menuStream.collect(partitioningBy(Dish::isVegetarian));
网友评论