您的位置:首页 > 科技 > IT业 > 高端的网红民宿设计_网站设计案例_网站服务器是什么意思_贺贵江seo教程

高端的网红民宿设计_网站设计案例_网站服务器是什么意思_贺贵江seo教程

2024/11/16 22:29:51 来源:https://blog.csdn.net/weixin_47363690/article/details/142338007  浏览:    关键词:高端的网红民宿设计_网站设计案例_网站服务器是什么意思_贺贵江seo教程
高端的网红民宿设计_网站设计案例_网站服务器是什么意思_贺贵江seo教程

目录

1.toList

2.toSet

3.toMap

4.toCollection

5.joining

6.groupingBy

7.partitioningBy

8.mapping

9.reducing

10.averagingInt & averagingLong & averagingLong

11. summingInt & summingLong & summingDouble

12.maxBy & minBy

13.counting

14.collectingAndThen

15.toConcurrentMap


Collectors 是 Java 8 引入的一个工具类,用于提供各种常见的 Collector 实现。这些 Collector 可以用于将流中的元素收集到各种目标容器中,如 ListSetMap 等。下面是一些 Collectors 工具类中常用的静态方法及其用法示例。

1.toList

描述:将流中的元素收集到一个 List 中。

List<String> list = Stream.of("a", "b", "c").collect(Collectors.toList());
2.toSet

描述:将流中的元素收集到一个 Set 中,去除重复项。

Set<String> set = Stream.of("a", "b", "c", "a").collect(Collectors.toSet());
3.toMap

方法一:将流转换为映射。

Map<String, Integer> nameToAge = people.stream().collect(Collectors.toMap(Person::getName, Person::getAge));

方法二:将流转换为映射,在键冲突时提供合并策略。

List<String> items = Arrays.asList("apple", "banana", "apple");
Map<String, Long> itemCounts = items.stream().collect(Collectors.toMap(Function.identity(), item -> 1L, Long::sum));
System.out.println(itemCounts); // 结果: {banana=1, apple=2}
4.toCollection

描述:将流中的元素收集到一个由工厂方法创建的集合中。

List<String> linkedList = Stream.of("a", "b", "c").collect(Collectors.toCollection(LinkedList::new));
5.joining

方法一:将流中的字符串元素连接成一个单一的字符串。

String joined = Stream.of("a", "b", "c").collect(Collectors.joining(", "));
System.out.println(joined);  // 结果: "a, b, c"

方法二:将流中的字符串元素连接成一个单一的字符串,并添加前缀和后缀。

String joined = Stream.of("a", "b", "c").collect(Collectors.joining(", ", "[", "]"));
System.out.println(joined); // 结果: "[a, b, c]"
6.groupingBy

方法一:将流中的元素按某个分类函数分组,结果是一个 Map<K, List<T>>

Map<String, List<String>> grouped = Stream.of("apple", "banana", "cherry", "date", "cat").collect(Collectors.groupingBy(s -> s.substring(0, 1)));
System.out.println(grouped); // {a=[apple], b=[banana], c=[cherry, cat], d=[date]}

方法二:将流中的元素按某个分类函数分组,并使用下游收集器进一步处理每个分组的结果。

Map<String, Set<String>> grouped = Stream.of("apple", "banana", "cherry", "date", "cherry").collect(Collectors.groupingBy(s -> s.substring(0, 1), Collectors.toSet()));
System.out.println(grouped); // 结果: {a=[apple], b=[banana], c=[cherry], d=[date]}
7.partitioningBy

方法一:将流中的元素按某个谓词分为两部分,结果是一个 Map<Boolean, List<T>>

Map<Boolean, List<Integer>> partitioned = Stream.of(1, 2, 3, 4, 5).collect(Collectors.partitioningBy(i -> i % 2 == 0));
System.out.println(partitioned); // 结果: {false=[1, 3, 5], true=[2, 4]}

方法二:将流中的元素按某个谓词分为两部分,并使用下游收集器进一步处理每个部分的结果。

Map<Boolean, Set<Integer>> partitioned = Stream.of(1, 2, 3, 4, 5, 2).collect(Collectors.partitioningBy(i -> i % 2 == 0, Collectors.toSet()));
System.out.println(partitioned); // 结果: {false=[1, 3, 5], true=[2, 4]}
8.mapping

描述:将流中的元素映射到另一个类型,并使用下游收集器进一步处理。

List<String> mapped = Stream.of("apple", "banana", "cherry").collect(Collectors.mapping(String::toUpperCase, Collectors.toList()));
System.out.println(mapped); // 结果: ["APPLE", "BANANA", "CHERRY"]
9.reducing

方法一:将流中的元素通过二元操作符进行归约。

Optional<Integer> sum = Stream.of(1, 2, 3, 4).collect(Collectors.reducing(Integer::sum));
System.out.println(sum); // 结果: Optional[10]

方法二:将流中的元素通过二元操作符进行归约,并提供一个初始值。

int sum = Stream.of(1, 2, 3, 4, 5).collect(Collectors.reducing(2, Integer::sum));
System.out.println(sum); // 结果: // 结果: 17

方法三:将流中的元素映射到另一个类型,并通过二元操作符进行归约。

int sum = Stream.of("1", "2", "3", "4", "6").collect(Collectors.reducing(2, Integer::parseInt, Integer::sum));
System.out.println(sum); // 结果: // 结果: 18
10.averagingInt & averagingLong & averagingLong

描述:计算流中元素的平均值,元素类型分别为 int, long, double

double average = Stream.of(1, 2, 3, 4).collect(Collectors.averagingInt(Integer::intValue));
System.out.println(average); // 结果: 2.5double average = Stream.of(1L, 2L, 3L, 4L).collect(Collectors.averagingLong(Long::longValue));
System.out.println(average); // 结果: 2.5double average = Stream.of(1.0, 2.0, 3.0, 4.0).collect(Collectors.averagingDouble(Double::doubleValue));
System.out.println(average); // 结果: 2.5
11. summingInt & summingLong & summingDouble

描述:计算流中元素的总和,元素类型分别为 int, long, double。

int sum = Stream.of(1, 2, 3, 4).collect(Collectors.summingInt(Integer::intValue));
System.out.println(sum); // 结果: 10long sum = Stream.of(1L, 2L, 3L, 4L).collect(Collectors.summingLong(Long::longValue));
System.out.println(sum); // 结果: 10double sum = Stream.of(1.0, 2.0, 3.0, 4.0).collect(Collectors.summingDouble(Double::doubleValue));
System.out.println(sum); // 结果: 10.0
12.maxBy & minBy

描述:找到流中最大值/ 最小值的元素。

Optional<Integer> max = Stream.of(1, 2, 3, 4).collect(Collectors.maxBy(Integer::compare));
System.out.println(max); // Optional[4]Optional<Integer> min = Stream.of(1, 2, 3, 4).collect(Collectors.minBy(Integer::compare));
System.out.println(min); // Optional[1]
13.counting

描述:计算流中元素的数量。

long count = Stream.of(1, 2, 3, 4, 7).collect(Collectors.counting());
System.out.println(count); // 结果: 5
14.collectingAndThen

描述:允许你在收集结果后执行额外的操作。

List<String> words = Arrays.asList("hello", "world");
String result = words.stream().collect(Collectors.collectingAndThen(Collectors.joining(", "), str -> "Result: " + str));
System.out.println(result); // 结果: Result: hello, world
15.toConcurrentMap

描述:将流转换为并发映射(ConcurrentMap),适用于多线程环境。

List<String> keys = Arrays.asList("key1", "key2", "key3");
ConcurrentMap<String, Integer> concurrentMap = keys.stream().collect(Collectors.toConcurrentMap(Function.identity(), k -> k.length()));
System.out.println(concurrentMap); // 结果: {key1=4, key2=4, key3=4}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com