- java.lang.Object
-
- java.util.stream.Collectors
-
public final class Collectors extends Object
实现各种有用的约简操作的Collector
的实现,例如将元素累积到集合中,根据各种标准汇总元素等。以下是使用预定义收集器执行常见的可变减少任务的示例:
// Accumulate names into a List List<String> list = people.stream() .map(Person::getName) .collect(Collectors.toList()); // Accumulate names into a TreeSet Set<String> set = people.stream() .map(Person::getName) .collect(Collectors.toCollection(TreeSet::new)); // Convert elements to strings and concatenate them, separated by commas String joined = things.stream() .map(Object::toString) .collect(Collectors.joining(", ")); // Compute sum of salaries of employee int total = employees.stream() .collect(Collectors.summingInt(Employee::getSalary)); // Group employees by department Map<Department, List<Employee>> byDept = employees.stream() .collect(Collectors.groupingBy(Employee::getDepartment)); // Compute sum of salaries by department Map<Department, Integer> totalByDept = employees.stream() .collect(Collectors.groupingBy(Employee::getDepartment, Collectors.summingInt(Employee::getSalary))); // Partition students into passing and failing Map<Boolean, List<Student>> passingFailing = students.stream() .collect(Collectors.partitioningBy(s -> s.getGrade() >= PASS_THRESHOLD));
- 从以下版本开始:
- 1.8
-
-
方法摘要
所有方法 静态方法 具体的方法 变量和类型 方法 描述 static <T> Collector<T,?,Double>
averagingDouble(ToDoubleFunction<? super T> mapper)
返回Collector
,它生成应用于输入元素的双值函数的算术平均值。static <T> Collector<T,?,Double>
averagingInt(ToIntFunction<? super T> mapper)
返回Collector
,它生成应用于输入元素的整数值函数的算术平均值。static <T> Collector<T,?,Double>
averagingLong(ToLongFunction<? super T> mapper)
返回Collector
,它生成应用于输入元素的长值函数的算术平均值。static <T,A,R,RR>
Collector<T,A,RR>collectingAndThen(Collector<T,A,R> downstream, Function<R,RR> finisher)
Collector
以执行额外的精加工转换。static <T> Collector<T,?,Long>
counting()
返回类型为T
的Collector
接受元素,用于计算输入元素的数量。static <T,A,R>
Collector<T,?,R>filtering(Predicate<? super T> predicate, Collector<? super T,A,R> downstream)
适应一个Collector
相同类型的一个接受元件T
通过将谓词给每个输入元素并且如果所述谓词仅返回累积true
。static <T,U,A,R>
Collector<T,?,R>flatMapping(Function<? super T,? extends Stream<? extends U>> mapper, Collector<? super U,A,R> downstream)
适应一个Collector
类型的接受元件U
到类型的一个接受元件T
通过积累之前施加平坦映射函数应用于每个输入元件。static <T,K>
Collector<T,?,Map<K,List<T>>>groupingBy(Function<? super T,? extends K> classifier)
返回Collector
“由基团”上的类型的输入元件操作实现T
,根据分类功能分组元素,并且在返回的结果Map
。static <T,K,D,A,M extends Map<K,D>>
Collector<T,?,M>groupingBy(Function<? super T,? extends K> classifier, Supplier<M> mapFactory, Collector<? super T,A,D> downstream)
返回Collector
“由基团”上的类型的输入元件操作实现级联T
,根据分类功能分组元素,然后使用下游的指定与给定键相关联的值进行还原操作Collector
。static <T,K,A,D>
Collector<T,?,Map<K,D>>groupingBy(Function<? super T,? extends K> classifier, Collector<? super T,A,D> downstream)
返回Collector
“由基团”上的类型的输入元件操作实现级联T
,根据分类功能分组元素,然后使用下游的指定与给定键相关联的值进行还原操作Collector
。static <T,K>
Collector<T,?,ConcurrentMap<K,List<T>>>groupingByConcurrent(Function<? super T,? extends K> classifier)
返回并发Collector
,对T
类型的输入元素执行“分组依据”操作,根据分类函数对元素进行分组。static <T,K,A,D,M extends ConcurrentMap<K,D>>
Collector<T,?,M>groupingByConcurrent(Function<? super T,? extends K> classifier, Supplier<M> mapFactory, Collector<? super T,A,D> downstream)
返回并发Collector
,对T
类型的输入元素执行级联“分组依据”操作,根据分类函数对元素进行分组,然后使用指定的下游Collector
对与给定键关联的值执行缩减操作。static <T,K,A,D>
Collector<T,?,ConcurrentMap<K,D>>groupingByConcurrent(Function<? super T,? extends K> classifier, Collector<? super T,A,D> downstream)
返回并发Collector
,对T
类型的输入元素执行级联“分组依据”操作,根据分类函数对元素进行分组,然后使用指定的下游Collector
对与给定键关联的值执行缩减操作。static Collector<CharSequence,?,String>
joining()
返回一个Collector
该串接的输入元素为String
,在遭遇顺序。static Collector<CharSequence,?,String>
joining(CharSequence delimiter)
返回一个Collector
,它以连接Collector
连接由指定分隔符分隔的输入元素。static Collector<CharSequence,?,String>
joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
返回一个Collector
,它以指定的Collector
连接由指定的分隔符分隔的输入元素和指定的前缀和后缀。static <T,U,A,R>
Collector<T,?,R>mapping(Function<? super T,? extends U> mapper, Collector<? super U,A,R> downstream)
通过在累积之前将映射函数应用于每个输入元素,将T
类型的Collector
接受元素调整为U
类型的一个接受元素。static <T> Collector<T,?,Optional<T>>
maxBy(Comparator<? super T> comparator)
返回Collector
,根据给定的Comparator
(描述为Optional<T>
生成最大元素。static <T> Collector<T,?,Optional<T>>
minBy(Comparator<? super T> comparator)
返回Collector
,根据给定的Comparator
生成最小元素,描述为Optional<T>
。static <T> Collector<T,?,Map<Boolean,List<T>>>
partitioningBy(Predicate<? super T> predicate)
返回Collector
由划分根据所述输入元件Predicate
,并且将它们组织到一个Map<Boolean, List<T>>
。static <T,D,A>
Collector<T,?,Map<Boolean,D>>partitioningBy(Predicate<? super T> predicate, Collector<? super T,A,D> downstream)
返回Collector
由划分根据所述输入元件Predicate
,减少了在根据另一每个分区中的值Collector
,并且将它们组织到一个Map<Boolean, D>
其值是下游减少的结果。static <T> Collector<T,?,Optional<T>>
reducing(BinaryOperator<T> op)
返回Collector
,它在指定的BinaryOperator
下执行其输入元素的减少。static <T> Collector<T,?,T>
reducing(T identity, BinaryOperator<T> op)
返回Collector
,使用提供的标识在指定的BinaryOperator
下执行其输入元素的减少。static <T,U>
Collector<T,?,U>reducing(U identity, Function<? super T,? extends U> mapper, BinaryOperator<U> op)
返回Collector
,它在指定的映射函数和BinaryOperator
下执行其输入元素的BinaryOperator
。static <T> Collector<T,?,DoubleSummaryStatistics>
summarizingDouble(ToDoubleFunction<? super T> mapper)
返回Collector
,double
映射函数应用于每个输入元素,并返回结果值的摘要统计信息。static <T> Collector<T,?,IntSummaryStatistics>
summarizingInt(ToIntFunction<? super T> mapper)
返回Collector
,int
映射函数应用于每个输入元素,并返回结果值的摘要统计信息。static <T> Collector<T,?,LongSummaryStatistics>
summarizingLong(ToLongFunction<? super T> mapper)
返回Collector
,long
映射函数应用于每个输入元素,并返回结果值的汇总统计信息。static <T> Collector<T,?,Double>
summingDouble(ToDoubleFunction<? super T> mapper)
返回Collector
,它生成应用于输入元素的双值函数的总和。static <T> Collector<T,?,Integer>
summingInt(ToIntFunction<? super T> mapper)
返回Collector
,它生成应用于输入元素的整数值函数的总和。static <T> Collector<T,?,Long>
summingLong(ToLongFunction<? super T> mapper)
返回Collector
,它生成应用于输入元素的长值函数的总和。static <T,C extends Collection<T>>
Collector<T,?,C>toCollection(Supplier<C> collectionFactory)
返回Collector
,其累积的输入元素融入到新的Collection
,在遭遇订单。static <T,K,U>
Collector<T,?,ConcurrentMap<K,U>>toConcurrentMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper)
返回并发Collector
,它将元素累积到ConcurrentMap
其键和值是将提供的映射函数应用于输入元素的结果。static <T,K,U>
Collector<T,?,ConcurrentMap<K,U>>toConcurrentMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction)
返回并发Collector
,它将元素累积到ConcurrentMap
其键和值是将提供的映射函数应用于输入元素的结果。static <T,K,U,M extends ConcurrentMap<K,U>>
Collector<T,?,M>toConcurrentMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction, Supplier<M> mapFactory)
返回并发Collector
,它将元素累积到ConcurrentMap
其键和值是将提供的映射函数应用于输入元素的结果。static <T> Collector<T,?,List<T>>
toList()
返回Collector
,将输入元素累积到新的List
。static <T,K,U>
Collector<T,?,Map<K,U>>toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper)
返回Collector
,它将元素累积到Map
其键和值是将提供的映射函数应用于输入元素的结果。static <T,K,U>
Collector<T,?,Map<K,U>>toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction)
返回Collector
,它将元素累积到Map
其键和值是将提供的映射函数应用于输入元素的结果。static <T,K,U,M extends Map<K,U>>
Collector<T,?,M>toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction, Supplier<M> mapFactory)
返回Collector
,它将元素累积到Map
其键和值是将提供的映射函数应用于输入元素的结果。static <T> Collector<T,?,Set<T>>
toSet()
返回Collector
,将输入元素累积到新的Set
。static <T> Collector<T,?,List<T>>
toUnmodifiableList()
static <T,K,U>
Collector<T,?,Map<K,U>>toUnmodifiableMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper)
返回Collector
,它将输入元素累积到 unmodifiable Map中 ,其键和值是将提供的映射函数应用于输入元素的结果。static <T,K,U>
Collector<T,?,Map<K,U>>toUnmodifiableMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction)
返回Collector
,它将输入元素累积到 unmodifiable Map中 ,其键和值是将提供的映射函数应用于输入元素的结果。static <T> Collector<T,?,Set<T>>
toUnmodifiableSet()
返回Collector
,将输入元素累积到 unmodifiable Set中 。
-
-
-
方法详细信息
-
toCollection
public static <T,C extends Collection<T>> Collector<T,?,C> toCollection(Supplier<C> collectionFactory)
返回Collector
,其累积的输入元素融入到新的Collection
,在遭遇订单。Collection
由提供的工厂创建。- 参数类型
-
T
- 输入元素的类型 -
C
- 生成的Collection
的类型 - 参数
-
collectionFactory
- 提供新空Collection
的供应商,其中将插入结果 - 结果
-
a
Collector
将所有输入元素收集到Collection
中
-
toList
public static <T> Collector<T,?,List<T>> toList()
返回Collector
,将输入元素累积到新的List
。List
返回的类型,可变性,可串行性或线程安全性无法保证; 如果需要更多地控制返回的List
,请使用toCollection(Supplier)
。- 参数类型
-
T
- 输入元素的类型 - 结果
-
a
Collector
,按照遭遇顺序将所有输入元素收集到List
中
-
toUnmodifiableList
public static <T> Collector<T,?,List<T>> toUnmodifiableList()
返回Collector
, 它按顺序将输入元素累积到unmodifiable List中。 返回的收集器不允许空值,如果显示空值,则抛出NullPointerException
。- 参数类型
-
T
- 输入元素的类型 - 结果
-
一个
Collector
,其累积所述输入元件到 unmodifiable List在遭遇顺序 - 从以下版本开始:
- 10
-
toSet
public static <T> Collector<T,?,Set<T>> toSet()
返回Collector
,将输入元素累积到新的Set
。Set
返回的类型,可变性,可串行性或线程安全性无法保证; 如果需要更多地控制返回的Set
,请使用toCollection(Supplier)
。这是一个收藏家
unordered
。- 参数类型
-
T
- 输入元素的类型 - 结果
-
a
Collector
,它将所有输入元素收集到Set
-
toUnmodifiableSet
public static <T> Collector<T,?,Set<T>> toUnmodifiableSet()
返回Collector
,将输入元素累积到unmodifiable Set中 。 返回的收集器不允许空值,如果显示空值,则抛出NullPointerException
。 如果输入包含重复元素,则保留重复项的任意元素。这是一个收藏家
unordered
。- 参数类型
-
T
- 输入元素的类型 - 结果
-
Collector
将输入元素累积到 unmodifiable Set中 - 从以下版本开始:
- 10
-
joining
public static Collector<CharSequence,?,String> joining()
返回一个Collector
该串接的输入元素为String
,在遭遇顺序。- 结果
-
Collector
按顺序将输入元素连接到String
-
joining
public static Collector<CharSequence,?,String> joining(CharSequence delimiter)
返回Collector
,它以连接Collector
连接由指定分隔符分隔的输入元素。- 参数
-
delimiter
- 每个元素之间使用的分隔符 - 结果
-
Collector
,它按顺序连接CharSequence元素,由指定的分隔符分隔
-
joining
public static Collector<CharSequence,?,String> joining(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
返回Collector
,它以指定的Collector
连接由指定的分隔符分隔的输入元素和指定的前缀和后缀。- 参数
-
delimiter
- 每个元素之间使用的分隔符 -
prefix
- 要在连接结果的开头使用的字符序列 -
suffix
- 要在连接结果的末尾使用的字符序列 - 结果
-
Collector
以连接Collector
连接CharSequence元素,由指定的分隔符分隔
-
mapping
public static <T,U,A,R> Collector<T,?,R> mapping(Function<? super T,? extends U> mapper, Collector<? super U,A,R> downstream)
适应一个Collector
类型的接受元件U
到类型的一个接受元件T
通过积累前应用映射函数到每个输入元素。- API Note:
-
mapping()
收集器在用于多级还原时最有用,例如groupingBy
或partitioningBy
下游。 例如,给定一个Person
的流,以累积每个城市中的姓氏集:Map<City, Set<String>> lastNamesByCity = people.stream().collect( groupingBy(Person::getCity, mapping(Person::getLastName, toSet())));
- 参数类型
-
T
- 输入元素的类型 -
U
- 下游收集器接受的元素类型 -
A
- 下游收集器的中间累积类型 -
R
- 收集器的结果类型 - 参数
-
mapper
- 要应用于输入元素的函数 -
downstream
- 将接受映射值的收集器 - 结果
- 收集器,它将映射函数应用于输入元素,并将映射结果提供给下游收集器
-
flatMapping
public static <T,U,A,R> Collector<T,?,R> flatMapping(Function<? super T,? extends Stream<? extends U>> mapper, Collector<? super U,A,R> downstream)
适应一个Collector
类型的接受元件U
到类型的一个接受元件T
通过积累之前施加平坦映射函数应用于每个输入元件。 平面映射函数将输入元素映射到覆盖零个或多个输出元素的stream
,然后在下游累积。 在将其内容放置在下游之后,每个映射的流是closed
。 (如果映射的流是null
,则使用空流。)- API Note:
-
当用于多级还原时,
flatMapping()
收集器最有用,例如groupingBy
或partitioningBy
下游。 例如,给定Order
的流,为每个客户累积一组订单项:Map<String, Set<LineItem>> itemsByCustomerName = orders.stream().collect( groupingBy(Order::getCustomerName, flatMapping(order -> order.getLineItems().stream(), toSet())));
- 参数类型
-
T
- 输入元素的类型 -
U
- 下游收集器接受的元素类型 -
A
- 下游收集器的中间累积类型 -
R
- 收集器的结果类型 - 参数
-
mapper
- 要应用于输入元素的函数,该函数返回结果流 -
downstream
- 将收到mapper返回的流元素的收集器 - 结果
- 收集器,它将映射函数应用于输入元素,并将平面映射结果提供给下游收集器
- 从以下版本开始:
- 9
-
filtering
public static <T,A,R> Collector<T,?,R> filtering(Predicate<? super T> predicate, Collector<? super T,A,R> downstream)
适应一个Collector
相同类型的一个接受元件T
通过将谓词给每个输入元素并且如果所述谓词仅返回累积true
。- API Note:
-
当用于多级还原时,
filtering()
收集器最有用,例如groupingBy
或partitioningBy
下游。 例如,给定一个Employee
的流,以累积每个部门中具有高于特定阈值的薪水的员工:Map<Department, Set<Employee>> wellPaidEmployeesByDepartment = employees.stream().collect( groupingBy(Employee::getDepartment, filtering(e -> e.getSalary() > 2000, toSet())));
filter()
操作不同。 在此示例中,假设在某些部门中没有员工的薪水高于阈值。 使用如上所示的过滤收集器将导致从该部门到空Set
。 如果filter()
执行流filter()
操作,则根本不存在该部门的映射。 - 参数类型
-
T
- 输入元素的类型 -
A
- 下游收集器的中间累积类型 -
R
- 收集器的结果类型 - 参数
-
predicate
- 要应用于输入元素的谓词 -
downstream
- 将接受与谓词匹配的值的收集器 - 结果
- 收集器,它将谓词应用于输入元素,并为下游收集器提供匹配元素
- 从以下版本开始:
- 9
-
collectingAndThen
public static <T,A,R,RR> Collector<T,A,RR> collectingAndThen(Collector<T,A,R> downstream, Function<R,RR> finisher)
Collector
以执行额外的精加工转换。 例如,可以调整toList()
收集器以始终生成不可变列表:List<String> list = people.stream().collect( collectingAndThen(toList(), Collections::unmodifiableList));
- 参数类型
-
T
- 输入元素的类型 -
A
- 下游收集器的中间累积类型 -
R
- 下游收集器的结果类型 -
RR
- 结果收集器的结果类型 - 参数
-
downstream
- 收藏家 -
finisher
- 要应用于下游收集器的最终结果的函数 - 结果
- 一个收集器,它执行下游收集器的动作,然后是一个额外的精加工步骤
-
counting
public static <T> Collector<T,?,Long> counting()
返回Collector
类型的接受元件T
计数输入元件的数量。 如果没有元素,则结果为0。- 实现要求:
-
这产生的结果相当于:
reducing(0L, e -> 1L, Long::sum)
- 参数类型
-
T
- 输入元素的类型 - 结果
-
一个计算输入元素的
Collector
-
minBy
public static <T> Collector<T,?,Optional<T>> minBy(Comparator<? super T> comparator)
返回Collector
,根据给定的Comparator
生成最小元素,描述为Optional<T>
。- 实现要求:
-
这产生的结果相当于:
reducing(BinaryOperator.minBy(comparator))
- 参数类型
-
T
- 输入元素的类型 - 参数
-
comparator
- 用于比较元素的Comparator
- 结果
-
Collector
产生最小值
-
maxBy
public static <T> Collector<T,?,Optional<T>> maxBy(Comparator<? super T> comparator)
返回Collector
,根据给定的Comparator
(描述为Optional<T>
生成最大元素。- 实现要求:
-
这产生的结果相当于:
reducing(BinaryOperator.maxBy(comparator))
- 参数类型
-
T
- 输入元素的类型 - 参数
-
comparator
- 用于比较元素的Comparator
- 结果
-
产生最大值的
Collector
-
summingInt
public static <T> Collector<T,?,Integer> summingInt(ToIntFunction<? super T> mapper)
返回Collector
,它生成应用于输入元素的整数值函数的总和。 如果没有元素,则结果为0。- 参数类型
-
T
- 输入元素的类型 - 参数
-
mapper
- 提取要求和的属性的函数 - 结果
-
Collector
,它生成派生属性的总和
-
summingLong
public static <T> Collector<T,?,Long> summingLong(ToLongFunction<? super T> mapper)
返回Collector
,它生成应用于输入元素的长值函数的总和。 如果没有元素,则结果为0。- 参数类型
-
T
- 输入元素的类型 - 参数
-
mapper
- 提取要求和的属性的函数 - 结果
-
Collector
生成派生属性的总和
-
summingDouble
public static <T> Collector<T,?,Double> summingDouble(ToDoubleFunction<? super T> mapper)
返回Collector
,它生成应用于输入元素的双值函数的总和。 如果没有元素,则结果为0。返回的总和可以根据记录值的顺序而变化,这是由于累积的舍入误差以及不同大小的值的累加。 通过增加绝对量值排序的值往往会产生更准确的结果。 如果任何记录的值是
NaN
或总和是在任何点NaN
那么总和将是NaN
。- 参数类型
-
T
- 输入元素的类型 - 参数
-
mapper
- 提取要求和的属性的函数 - 结果
-
Collector
,它生成派生属性的总和
-
averagingInt
public static <T> Collector<T,?,Double> averagingInt(ToIntFunction<? super T> mapper)
返回Collector
,它生成应用于输入元素的整数值函数的算术平均值。 如果没有元素,则结果为0。- 参数类型
-
T
- 输入元素的类型 - 参数
-
mapper
- 提取要平均的属性的函数 - 结果
-
Collector
,它生成派生属性的算术平均值
-
averagingLong
public static <T> Collector<T,?,Double> averagingLong(ToLongFunction<? super T> mapper)
返回Collector
,它生成应用于输入元素的长值函数的算术平均值。 如果没有元素,则结果为0。- 参数类型
-
T
- 输入元素的类型 - 参数
-
mapper
- 提取要平均的属性的函数 - 结果
-
Collector
,它生成派生属性的算术平均值
-
averagingDouble
public static <T> Collector<T,?,Double> averagingDouble(ToDoubleFunction<? super T> mapper)
返回Collector
,它生成应用于输入元素的双值函数的算术平均值。 如果没有元素,则结果为0。返回的平均值可以根据记录值的顺序而变化,这是由于累积的舍入误差以及不同大小的值的累加。 通过增加绝对量值排序的值往往会产生更准确的结果。 如果任何记录值是
NaN
或者总和在任何点NaN
那么平均值将是NaN
。- Implementation Note:
-
double
格式可以表示-2 53到2 53范围内的所有连续整数。 如果管道具有超过2 53个值,则平均计算中的除数将饱和为2 53 ,从而导致额外的数值误差。 - 参数类型
-
T
- 输入元素的类型 - 参数
-
mapper
- 提取要平均的属性的函数 - 结果
-
Collector
生成派生属性的算术平均值
-
reducing
public static <T> Collector<T,?,T> reducing(T identity, BinaryOperator<T> op)
返回Collector
,使用提供的标识在指定的BinaryOperator
下执行其输入元素的减少。- API Note:
-
当用于
groupingBy
或partitioningBy
下游的多级还原时,reducing()
收集器最有用。 要对流执行简单缩减,请改用Stream.reduce(Object, BinaryOperator)
}。 - 参数类型
-
T
- 缩减的输入和输出的元素类型 - 参数
-
identity
- 缩减的标识值(也是没有输入元素时返回的值) -
op
- 用于减少输入元素的BinaryOperator<T>
- 结果
-
Collector
执行还原操作 - 另请参见:
-
reducing(BinaryOperator)
,reducing(Object, Function, BinaryOperator)
-
reducing
public static <T> Collector<T,?,Optional<T>> reducing(BinaryOperator<T> op)
返回Collector
,它在指定的BinaryOperator
下执行其输入元素的减少。 结果描述为Optional<T>
。- API Note:
-
当用于多级还原时,
reducing()
收集器最有用,位于groupingBy
或partitioningBy
下游。 要对流执行简单缩减,请改用Stream.reduce(BinaryOperator)
。例如,给定一个
Person
的流,计算每个城市中最高的人:Comparator<Person> byHeight = Comparator.comparing(Person::getHeight); Map<City, Optional<Person>> tallestByCity = people.stream().collect( groupingBy(Person::getCity, reducing(BinaryOperator.maxBy(byHeight))));
- 参数类型
-
T
- 减少的输入和输出的元素类型 - 参数
-
op
- 用于减少输入元素的BinaryOperator<T>
- 结果
-
一个
Collector
,它实现了还原操作 - 另请参见:
-
reducing(Object, BinaryOperator)
,reducing(Object, Function, BinaryOperator)
-
reducing
public static <T,U> Collector<T,?,U> reducing(U identity, Function<? super T,? extends U> mapper, BinaryOperator<U> op)
返回Collector
,它在指定的映射函数和BinaryOperator
下执行其输入元素的减少。 这是reducing(Object, BinaryOperator)
的概括,其允许在还原之前转换元素。- API Note:
-
reducing()
收集器在用于多级还原时最有用,位于groupingBy
或partitioningBy
下游。 要在流上执行简单的map-reduce,请改用Stream.map(Function)
和Stream.reduce(Object, BinaryOperator)
。例如,给定一个
Person
流,计算每个城市居民的最长姓氏:Comparator<String> byLength = Comparator.comparing(String::length); Map<City, String> longestLastNameByCity = people.stream().collect( groupingBy(Person::getCity, reducing("", Person::getLastName, BinaryOperator.maxBy(byLength))));
- 参数类型
-
T
- 输入元素的类型 -
U
- 映射值的类型 - 参数
-
identity
- 缩减的标识值(也是没有输入元素时返回的值) -
mapper
- 应用于每个输入值的映射函数 -
op
- 用于减少映射值的BinaryOperator<U>
- 结果
-
a
Collector
实现map-reduce操作 - 另请参见:
-
reducing(Object, BinaryOperator)
,reducing(BinaryOperator)
-
groupingBy
public static <T,K> Collector<T,?,Map<K,List<T>>> groupingBy(Function<? super T,? extends K> classifier)
返回Collector
“由基团”上的类型的输入元件操作实现T
,根据分类功能分组元素,并且在返回的结果Map
。分类函数将元素映射到某些键类型
K
。 收集器生成Map<K, List<T>>
其键是将分类函数应用于输入元素所得的值,其对应值为List
其中包含映射到分类函数下的关联键的输入元素。无法保证返回的
Map
或List
对象的类型,可变性,可序列化或线程安全性。- 实现要求:
-
这会产生类似于的结果:
groupingBy(classifier, toList());
- Implementation Note:
-
返回的
Collector
不是并发的。 对于并行流管道,combiner
功能通过将键从一个映射合并到另一个映射来运行,这可能是一项昂贵的操作。 如果不需要保留元素出现在生成的Map
收集器中的顺序,则使用groupingByConcurrent(Function)
可以提供更好的并行性能。 - 参数类型
-
T
- 输入元素的类型 -
K
- 键的类型 - 参数
-
classifier
- 将输入元素映射到键的分类器函数 - 结果
-
a
Collector
实现分组操作 - 另请参见:
-
groupingBy(Function, Collector)
,groupingBy(Function, Supplier, Collector)
,groupingByConcurrent(Function)
-
groupingBy
public static <T,K,A,D> Collector<T,?,Map<K,D>> groupingBy(Function<? super T,? extends K> classifier, Collector<? super T,A,D> downstream)
返回Collector
“由基团”上的类型的输入元件操作实现级联T
,根据分类功能分组元素,然后使用下游的指定与给定键相关联的值进行还原操作Collector
。分类函数将元素映射到某些键类型
K
。 下游收集器上类型的元素进行操作T
并产生类型的结果D
。 生成的收集器生成Map<K, D>
。Map
返回的Map
,不保证其类型,可变性,可串行性或线程安全性。例如,要计算每个城市中人员的姓氏集:
Map<City, Set<String>> namesByCity = people.stream().collect( groupingBy(Person::getCity, mapping(Person::getLastName, toSet())));
- Implementation Note:
-
返回的
Collector
不是并发的。 对于并行流管道,combiner
功能通过将键从一个映射合并到另一个映射来进行操作,这可能是一项昂贵的操作。 如果不需要保留向下游收集器提供元素的顺序,则使用groupingByConcurrent(Function, Collector)
可以提供更好的并行性能。 - 参数类型
-
T
- 输入元素的类型 -
K
- 键的类型 -
A
- 下游收集器的中间累积类型 -
D
- 下游缩减的结果类型 - 参数
-
classifier
- 将输入元素映射到键的分类器函数 -
downstream
- 实现下游减少的Collector
- 结果
-
a
Collector
实现级联分组操作 - 另请参见:
-
groupingBy(Function)
,groupingBy(Function, Supplier, Collector)
,groupingByConcurrent(Function, Collector)
-
groupingBy
public static <T,K,D,A,M extends Map<K,D>> Collector<T,?,M> groupingBy(Function<? super T,? extends K> classifier, Supplier<M> mapFactory, Collector<? super T,A,D> downstream)
返回Collector
“由基团”上的类型的输入元件操作实现级联T
,根据分类功能分组元素,然后使用下游的指定与给定键相关联的值进行还原操作Collector
。 收集器生成的Map
使用提供的工厂功能创建。分类函数将元素映射到某些键类型
K
。 下游收集器上类型的元素进行操作T
并产生类型的结果D
。 得到的收集器产生Map<K, D>
。例如,要计算每个城市中人员的姓氏集,其中城市名称已排序:
Map<City, Set<String>> namesByCity = people.stream().collect( groupingBy(Person::getCity, TreeMap::new, mapping(Person::getLastName, toSet())));
- Implementation Note:
-
返回的
Collector
不是并发的。 对于并行流管道,combiner
功能通过将键从一个映射合并到另一个映射来运行,这可能是一项昂贵的操作。 如果不需要保留向下游收集器提供元素的顺序,则使用groupingByConcurrent(Function, Supplier, Collector)
可以提供更好的并行性能。 - 参数类型
-
T
- 输入元素的类型 -
K
- 键的类型 -
A
- 下游收集器的中间累积类型 -
D
- 下游缩减的结果类型 -
M
- 生成的Map
的类型 - 参数
-
classifier
- 将输入元素映射到键的分类器函数 -
downstream
- 实现下游减少的Collector
-
mapFactory
- 提供新空Map
的供应商,其中将插入结果 - 结果
-
a
Collector
实现级联分组操作 - 另请参见:
-
groupingBy(Function, Collector)
,groupingBy(Function)
,groupingByConcurrent(Function, Supplier, Collector)
-
groupingByConcurrent
public static <T,K> Collector<T,?,ConcurrentMap<K,List<T>>> groupingByConcurrent(Function<? super T,? extends K> classifier)
返回并发Collector
,对T
类型的输入元素执行“分组依据”操作,根据分类函数对元素进行分组。这是一个
concurrent
和unordered
收藏家。分类函数将元素映射到某些键类型
K
。 收集器生成ConcurrentMap<K, List<T>>
其键是将分类函数应用于输入元素所得的值,其对应值为List
s,其中包含映射到分类函数下的关联键的输入元素。还有的类型,可变性,或串行化的任何保证
ConcurrentMap
或List
对象返回,或的线程安全的List
对象返回。- 实现要求:
-
这会产生类似于的结果:
groupingByConcurrent(classifier, toList());
- 参数类型
-
T
- 输入元素的类型 -
K
- 键的类型 - 参数
-
classifier
- 将输入元素映射到键的分类器函数 - 结果
-
实现group-by操作的并发无序
Collector
- 另请参见:
-
groupingBy(Function)
,groupingByConcurrent(Function, Collector)
,groupingByConcurrent(Function, Supplier, Collector)
-
groupingByConcurrent
public static <T,K,A,D> Collector<T,?,ConcurrentMap<K,D>> groupingByConcurrent(Function<? super T,? extends K> classifier, Collector<? super T,A,D> downstream)
返回并发Collector
,对T
类型的输入元素执行级联“分组依据”操作,根据分类函数对元素进行分组,然后使用指定的下游Collector
对与给定键关联的值执行缩减操作。这是一个
concurrent
和unordered
收藏家。分类函数将元素映射到某些键类型
K
。 下游收集器上类型的元素进行操作T
并产生类型的结果D
。 生成的收集器生成ConcurrentMap<K, D>
。ConcurrentMap
返回的ConcurrentMap
,不保证其类型,可变性或可串行性。例如,要计算每个城市中人员的姓氏集,其中城市名称已排序:
ConcurrentMap<City, Set<String>> namesByCity = people.stream().collect( groupingByConcurrent(Person::getCity, mapping(Person::getLastName, toSet())));
- 参数类型
-
T
- 输入元素的类型 -
K
- 键的类型 -
A
- 下游收集器的中间累积类型 -
D
- 下游缩减的结果类型 - 参数
-
classifier
- 将输入元素映射到键的分类器函数 -
downstream
- 实现下游减少的Collector
- 结果
-
并发,无序
Collector
实现级联分组操作 - 另请参见:
-
groupingBy(Function, Collector)
,groupingByConcurrent(Function)
,groupingByConcurrent(Function, Supplier, Collector)
-
groupingByConcurrent
public static <T,K,A,D,M extends ConcurrentMap<K,D>> Collector<T,?,M> groupingByConcurrent(Function<? super T,? extends K> classifier, Supplier<M> mapFactory, Collector<? super T,A,D> downstream)
返回并发Collector
,对T
类型的输入元素执行级联“分组依据”操作,根据分类函数对元素进行分组,然后使用指定的下游Collector
对与给定键关联的值执行缩减操作。 收集器生成的ConcurrentMap
使用提供的工厂功能创建。这是一个
concurrent
和unordered
收藏家。分类函数将元素映射到某些键类型
K
。 下游收集器上类型的元素进行操作T
并产生类型的结果D
。 得到的收集器产生ConcurrentMap<K, D>
。例如,要计算每个城市中人员的姓氏集,其中城市名称已排序:
ConcurrentMap<City, Set<String>> namesByCity = people.stream().collect( groupingByConcurrent(Person::getCity, ConcurrentSkipListMap::new, mapping(Person::getLastName, toSet())));
- 参数类型
-
T
- 输入元素的类型 -
K
- 键的类型 -
A
- 下游收集器的中间累积类型 -
D
- 下游缩减的结果类型 -
M
- 生成的ConcurrentMap
的类型 - 参数
-
classifier
- 将输入元素映射到键的分类器函数 -
downstream
- 执行下游减少的Collector
-
mapFactory
- 提供新空ConcurrentMap
的供应商,其中将插入结果 - 结果
-
并发,无序
Collector
实现级联group-by操作 - 另请参见:
-
groupingByConcurrent(Function)
,groupingByConcurrent(Function, Collector)
,groupingBy(Function, Supplier, Collector)
-
partitioningBy
public static <T> Collector<T,?,Map<Boolean,List<T>>> partitioningBy(Predicate<? super T> predicate)
返回Collector
由划分根据所述输入元件Predicate
,并且将它们组织到一个Map<Boolean, List<T>>
。 返回的Map
始终包含false
和true
键的映射。List
返回的Map
或List
,不保证其类型,可变性,可串行性或线程安全性。- API Note:
- 如果分区没有元素,则结果Map中的值将为空List。
- 参数类型
-
T
- 输入元素的类型 - 参数
-
predicate
- 用于对输入元素进行分类的谓词 - 结果
-
a
Collector
实现分区操作 - 另请参见:
-
partitioningBy(Predicate, Collector)
-
partitioningBy
public static <T,D,A> Collector<T,?,Map<Boolean,D>> partitioningBy(Predicate<? super T> predicate, Collector<? super T,A,D> downstream)
返回Collector
由划分根据所述输入元件Predicate
,减少了在根据另一每个分区中的值Collector
,并且将它们组织到一个Map<Boolean, D>
其值是下游减少的结果。返回的
Map
始终包含false
和true
键的映射。Map
返回的Map
,不保证其类型,可变性,可串行性或线程安全性。- API Note:
- 如果分区没有元素,则通过调用下游收集器的供应商功能然后应用修整器功能来获取结果Map中的值。
- 参数类型
-
T
- 输入元素的类型 -
A
- 下游收集器的中间累积类型 -
D
- 下游缩减的结果类型 - 参数
-
predicate
- 用于对输入元素进行分类的谓词 -
downstream
- 实现下游减少的Collector
- 结果
-
Collector
实现级联分区操作 - 另请参见:
-
partitioningBy(Predicate)
-
toMap
public static <T,K,U> Collector<T,?,Map<K,U>> toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper)
返回Collector
,它将元素累积到Map
其键和值是将提供的映射函数应用于输入元素的结果。如果映射的密钥包含重复项(根据
Object.equals(Object)
),则在执行收集操作时会引发IllegalStateException
。 如果映射的键可能有重复项,请改用toMap(Function, Function, BinaryOperator)
。Map
返回的Map
,不保证其类型,可变性,可串行性或线程安全性。- API Note:
-
键或值通常是输入元素。
在这种情况下,实用方法
Function.identity()
可能是有帮助的。 例如,以下内容生成Map
映射学生到他们的平均成绩点:Map<Student, Double> studentToGPA = students.stream().collect( toMap(Function.identity(), student -> computeGPA(student)));
Map
映射到学生的唯一标识符:Map<String, Student> studentIdToStudent = students.stream().collect( toMap(Student::getId, Function.identity()));
- Implementation Note:
-
返回的
Collector
不是并发的。 对于并行流管道,combiner
功能通过将键从一个映射合并到另一个映射来操作,这可能是昂贵的操作。 如果不需要将结果按顺序插入Map
,则使用toConcurrentMap(Function, Function)
可以提供更好的并行性能。 - 参数类型
-
T
- 输入元素的类型 -
K
- 键映射函数的输出类型 -
U
- 值映射函数的输出类型 - 参数
-
keyMapper
- 用于生成密钥的映射函数 -
valueMapper
- 用于生成值的映射函数 - 结果
-
a
Collector
,它将元素收集到Map
其键和值是将映射函数应用于输入元素的结果 - 另请参见:
-
toMap(Function, Function, BinaryOperator)
,toMap(Function, Function, BinaryOperator, Supplier)
,toConcurrentMap(Function, Function)
-
toUnmodifiableMap
public static <T,K,U> Collector<T,?,Map<K,U>> toUnmodifiableMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper)
返回Collector
,它将输入元素累积到unmodifiable Map中 ,其键和值是将提供的映射函数应用于输入元素的结果。如果映射的键包含重复项(根据
Object.equals(Object)
),则在执行收集操作时将引发IllegalStateException
。 如果映射的键可能有重复项,请使用toUnmodifiableMap(Function, Function, BinaryOperator)
来处理值的合并。返回的收集器不允许使用null键和值。 如果任一映射函数返回null,则将抛出
NullPointerException
。- 参数类型
-
T
- 输入元素的类型 -
K
- 键映射函数的输出类型 -
U
- 值映射函数的输出类型 - 参数
-
keyMapper
- 用于生成密钥的映射函数,必须为非null -
valueMapper
- 用于生成值的映射函数,必须为非null - 结果
-
Collector
将输入元素累积到 unmodifiable Map中 ,其键和值是将提供的映射函数应用于输入元素的结果 - 异常
-
NullPointerException
- 如果keyMapper或valueMapper为null - 从以下版本开始:
- 10
- 另请参见:
-
toUnmodifiableMap(Function, Function, BinaryOperator)
-
toMap
public static <T,K,U> Collector<T,?,Map<K,U>> toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction)
返回Collector
,它将元素累积到Map
其键和值是将提供的映射函数应用于输入元素的结果。如果映射的键包含重复项(根据
Object.equals(Object)
),则将值映射函数应用于每个相等的元素,并使用提供的合并函数合并结果。Map
返回的Map
,不保证其类型,可变性,可串行性或线程安全性。- API Note:
-
有多种方法可以处理映射到同一个键的多个元素之间的冲突。
toMap
的其他形式只使用无条件抛出的合并函数,但您可以轻松编写更灵活的合并策略。 例如,如果您有一个Person
的流,并且您想要生成一个“电话簿”映射名称来解决,但是有两个人可能具有相同的名称,您可以按照以下方式优雅地处理这些冲突,并生成Map
映射名称到连接的地址列表:Map<String, String> phoneBook = people.stream().collect( toMap(Person::getName, Person::getAddress, (s, a) -> s + ", " + a));
- Implementation Note:
-
返回的
Collector
不是并发的。 对于并行流管道,combiner
功能通过将键从一个映射合并到另一个映射来进行操作,这可能是一项昂贵的操作。 如果不要求结果以遭遇顺序合并到Map
中,则使用toConcurrentMap(Function, Function, BinaryOperator)
可以提供更好的并行性能。 - 参数类型
-
T
- 输入元素的类型 -
K
- 键映射函数的输出类型 -
U
- 值映射函数的输出类型 - 参数
-
keyMapper
- 用于生成密钥的映射函数 -
valueMapper
- 用于生成值的映射函数 -
mergeFunction
- 合并函数,用于解决与同一密钥关联的值之间的冲突,如提供给Map.merge(Object, Object, BiFunction)
- 结果
-
Collector
,它将元素收集到Map
其键是将键映射函数应用于输入元素的结果,其值是将值映射函数应用于所有等于键的输入元素并使用合并将它们组合的结果功能 - 另请参见:
-
toMap(Function, Function)
,toMap(Function, Function, BinaryOperator, Supplier)
,toConcurrentMap(Function, Function, BinaryOperator)
-
toUnmodifiableMap
public static <T,K,U> Collector<T,?,Map<K,U>> toUnmodifiableMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction)
返回Collector
,它将输入元素累积到unmodifiable Map中 ,其键和值是将提供的映射函数应用于输入元素的结果。如果映射的密钥包含重复项(根据
Object.equals(Object)
),则将值映射函数应用于每个相等的元素,并使用提供的合并函数合并结果。返回的收集器不允许使用null键和值。 如果任一映射函数返回null,则将抛出
NullPointerException
。- 参数类型
-
T
- 输入元素的类型 -
K
- 键映射函数的输出类型 -
U
- 值映射函数的输出类型 - 参数
-
keyMapper
- 用于生成密钥的映射函数,必须为非null -
valueMapper
- 用于生成值的映射函数必须为非null -
mergeFunction
- 用于解决与同一密钥关联的值之间的冲突的合并函数(如提供给Map.merge(Object, Object, BiFunction)
)必须为非null - 结果
-
Collector
将输入元素累积到 unmodifiable Map中 ,其键和值是将提供的映射函数应用于输入元素的结果 - 异常
-
NullPointerException
- 如果keyMapper,valueMapper或mergeFunction为null - 从以下版本开始:
- 10
- 另请参见:
-
toUnmodifiableMap(Function, Function)
-
toMap
public static <T,K,U,M extends Map<K,U>> Collector<T,?,M> toMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction, Supplier<M> mapFactory)
返回Collector
,它将元素累积到Map
其键和值是将提供的映射函数应用于输入元素的结果。如果映射的键包含重复项(根据
Object.equals(Object)
),则将值映射函数应用于每个相等的元素,并使用提供的合并函数合并结果。Map
由提供的供应商功能创建。- Implementation Note:
-
返回的
Collector
不是并发的。 对于并行流管道,combiner
功能通过将键从一个映射合并到另一个映射来进行操作,这可能是一项昂贵的操作。 如果不需要将结果合并到遭遇顺序中的Map
,则使用toConcurrentMap(Function, Function, BinaryOperator, Supplier)
可以提供更好的并行性能。 - 参数类型
-
T
- 输入元素的类型 -
K
- 键映射函数的输出类型 -
U
- 值映射函数的输出类型 -
M
- 生成的Map
的类型 - 参数
-
keyMapper
- 用于生成密钥的映射函数 -
valueMapper
- 用于生成值的映射函数 -
mergeFunction
- 合并函数,用于解决与同一密钥关联的值之间的冲突,如提供给Map.merge(Object, Object, BiFunction)
-
mapFactory
- 提供新空Map
的供应商,其中将插入结果 - 结果
-
Collector
将元素收集到Map
其键是将键映射函数应用于输入元素的结果,其值是将值映射函数应用于与键相等的所有输入元素并使用合并将它们组合的结果功能 - 另请参见:
-
toMap(Function, Function)
,toMap(Function, Function, BinaryOperator)
,toConcurrentMap(Function, Function, BinaryOperator, Supplier)
-
toConcurrentMap
public static <T,K,U> Collector<T,?,ConcurrentMap<K,U>> toConcurrentMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper)
返回并发Collector
,它将元素累积到ConcurrentMap
其键和值是将提供的映射函数应用于输入元素的结果。如果映射的密钥包含重复项(根据
Object.equals(Object)
),则执行收集操作时将引发IllegalStateException
。 如果映射的键可能有重复项,请改用toConcurrentMap(Function, Function, BinaryOperator)
。ConcurrentMap
返回的ConcurrentMap
,不保证其类型,可变性或可串行性。- API Note:
-
键或值通常是输入元素。
在这种情况下,实用方法
Function.identity()
可能是有帮助的。 例如,以下内容生成ConcurrentMap
映射学生平均成绩点:ConcurrentMap<Student, Double> studentToGPA = students.stream().collect( toConcurrentMap(Function.identity(), student -> computeGPA(student)));
ConcurrentMap
将唯一标识符映射到学生:ConcurrentMap<String, Student> studentIdToStudent = students.stream().collect( toConcurrentMap(Student::getId, Function.identity()));
这是一个
concurrent
和unordered
收藏家。 - 参数类型
-
T
- 输入元素的类型 -
K
- 键映射函数的输出类型 -
U
- 值映射函数的输出类型 - 参数
-
keyMapper
- 用于生成密钥的映射函数 -
valueMapper
- 用于生成值的映射函数 - 结果
-
并发,无序
Collector
,它将元素收集到ConcurrentMap
其键是将键映射函数应用于输入元素的结果,其值是将值映射函数应用于输入元素的结果 - 另请参见:
-
toMap(Function, Function)
,toConcurrentMap(Function, Function, BinaryOperator)
,toConcurrentMap(Function, Function, BinaryOperator, Supplier)
-
toConcurrentMap
public static <T,K,U> Collector<T,?,ConcurrentMap<K,U>> toConcurrentMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction)
返回并发Collector
,它将元素累积到ConcurrentMap
其键和值是将提供的映射函数应用于输入元素的结果。如果映射的键包含重复项(根据
Object.equals(Object)
),则将值映射函数应用于每个相等的元素,并使用提供的合并函数合并结果。ConcurrentMap
返回的ConcurrentMap
,不保证其类型,可变性或可串行性。- API Note:
-
有多种方法可以处理映射到同一个键的多个元素之间的冲突。
toConcurrentMap
的其他形式只是使用无条件抛出的合并函数,但您可以轻松编写更灵活的合并策略。 例如,如果您有一个Person
的流,并且您想要生成一个“电话簿”映射名称来解决,但是有两个人可能具有相同的名称,您可以按照以下方式优雅地处理这些冲突,并生成ConcurrentMap
映射名称到连接的地址列表:ConcurrentMap<String, String> phoneBook = people.stream().collect( toConcurrentMap(Person::getName, Person::getAddress, (s, a) -> s + ", " + a));
这是一个
concurrent
和unordered
收藏家。 - 参数类型
-
T
- 输入元素的类型 -
K
- 键映射函数的输出类型 -
U
- 值映射函数的输出类型 - 参数
-
keyMapper
- 用于生成密钥的映射函数 -
valueMapper
- 用于生成值的映射函数 -
mergeFunction
- 合并函数,用于解决与同一密钥关联的值之间的冲突,如提供给Map.merge(Object, Object, BiFunction)
- 结果
-
并行,无序
Collector
,它将元素收集到ConcurrentMap
其键是将键映射函数应用于输入元素的结果,其值是将值映射函数应用于等于键的所有输入元素并将它们组合的结果使用合并功能 - 另请参见:
-
toConcurrentMap(Function, Function)
,toConcurrentMap(Function, Function, BinaryOperator, Supplier)
,toMap(Function, Function, BinaryOperator)
-
toConcurrentMap
public static <T,K,U,M extends ConcurrentMap<K,U>> Collector<T,?,M> toConcurrentMap(Function<? super T,? extends K> keyMapper, Function<? super T,? extends U> valueMapper, BinaryOperator<U> mergeFunction, Supplier<M> mapFactory)
返回并发Collector
,它将元素累积到ConcurrentMap
其键和值是将提供的映射函数应用于输入元素的结果。如果映射的键包含重复项(根据
Object.equals(Object)
),则将值映射函数应用于每个相等的元素,并使用提供的合并函数合并结果。ConcurrentMap
由提供的供应商功能创建。这是一个
concurrent
和unordered
收藏家。- 参数类型
-
T
- 输入元素的类型 -
K
- 键映射函数的输出类型 -
U
- 值映射函数的输出类型 -
M
- 生成的ConcurrentMap
的类型 - 参数
-
keyMapper
- 用于生成密钥的映射函数 -
valueMapper
- 用于生成值的映射函数 -
mergeFunction
- 合并函数,用于解决与同一密钥关联的值之间的冲突,如提供给Map.merge(Object, Object, BiFunction)
-
mapFactory
- 提供新空ConcurrentMap
的供应商,其中将插入结果 - 结果
-
一个并发的,无序的
Collector
,它将元素收集到ConcurrentMap
其键是将键映射函数应用于输入元素的结果,其值是将值映射函数应用于等于键的所有输入元素并将它们组合的结果使用合并功能 - 另请参见:
-
toConcurrentMap(Function, Function)
,toConcurrentMap(Function, Function, BinaryOperator)
,toMap(Function, Function, BinaryOperator, Supplier)
-
summarizingInt
public static <T> Collector<T,?,IntSummaryStatistics> summarizingInt(ToIntFunction<? super T> mapper)
返回Collector
,int
映射函数应用于每个输入元素,并返回结果值的汇总统计信息。- 参数类型
-
T
- 输入元素的类型 - 参数
-
mapper
- 应用于每个元素的映射函数 - 结果
-
a
Collector
实现汇总统计数据减少 - 另请参见:
-
summarizingDouble(ToDoubleFunction)
,summarizingLong(ToLongFunction)
-
summarizingLong
public static <T> Collector<T,?,LongSummaryStatistics> summarizingLong(ToLongFunction<? super T> mapper)
返回Collector
,long
映射函数应用于每个输入元素,并返回结果值的摘要统计信息。- 参数类型
-
T
- 输入元素的类型 - 参数
-
mapper
- 要应用于每个元素的映射函数 - 结果
-
a
Collector
实现摘要统计减少 - 另请参见:
-
summarizingDouble(ToDoubleFunction)
,summarizingInt(ToIntFunction)
-
summarizingDouble
public static <T> Collector<T,?,DoubleSummaryStatistics> summarizingDouble(ToDoubleFunction<? super T> mapper)
返回Collector
,double
映射函数应用于每个输入元素,并返回结果值的摘要统计信息。- 参数类型
-
T
- 输入元素的类型 - 参数
-
mapper
- 应用于每个元素的映射函数 - 结果
-
a
Collector
实现摘要统计减少 - 另请参见:
-
summarizingLong(ToLongFunction)
,summarizingInt(ToIntFunction)
-
-