stream groupby map
时间: 2023-11-12 09:47:27 浏览: 74
Stream的group by操作是将元素根据指定的条件进行分组,并返回一个Map对象,其中键是分组的标准,值是分组后的元素列表。在Java的Collectors类中,有多个重载的groupingBy方法可以实现group by操作。
方法1:groupingBy(classifier)
该方法接受一个Function参数classifier,用于定义分组的标准。返回一个Collector对象,用于将Stream中的元素按照classifier的结果进行分组,并将结果以Map<K, List<T>>的形式返回。其中K是分类的结果类型,T是元素类型。
方法2:groupingBy(classifier, downstream)
该方法除了接受classifier参数外,还接受一个Collector参数downstream,用于进一步处理分组后的每组元素。返回一个Collector对象,将Stream中的元素按照classifier的结果进行分组,并将结果以Map<K, D>的形式返回。其中K是分类的结果类型,D是downstream的结果类型。
方法3:groupingBy(classifier, mapFactory, downstream)
该方法除了接受classifier和downstream参数外,还接受一个Supplier参数mapFactory,用于创建返回的Map对象。返回一个Collector对象,将Stream中的元素按照classifier的结果进行分组,并将结果以指定的Map<K, D>的形式返回。其中K是分类的结果类型,D是downstream的结果类型。
使用groupingBy方法可以方便地对Stream进行group by操作,根据不同的需求选择合适的重载方法,并结合Function和Collector参数来定义分组的标准和处理方式。最终返回的Map对象中,键是分组的结果,值是分组后的元素列表。
阅读全文