Java8特性,Stream流的使用,收集成为map集合

Java 8引入了Stream API,这是Java集合操作的一个重大改进。Stream API提供了一种高效且易于使用的处理数据的方式。

Stream是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。注意:Stream自己不会存储元素,它不会改变源对象,反而它的操作会返回一个全新的Stream,且它的操作是延迟执行的,这意味着它们会等到需要结果的时候才执行。

以下是Stream的一些常用操作:

1.Filter: 过滤Stream中的元素

java

List<String> names = Arrays.asList("John", "Peter", "Susan", "Kim", "Jen", "George", "Alan");
List<String> namesWithJ = names.stream()
                                .filter(name -> name.startsWith("J"))
                                .collect(Collectors.toList());

2.Map: 将Stream中的每一个元素映射到另一个对象上

List<String> upperCaseNames = names.stream()
                                    .map(String::toUpperCase)
                                    .collect(Collectors.toList());

3.Sorted: 对Stream中的元素进行排序

List<String> sortedNames = names.stream()
                                 .sorted()
                                 .collect(Collectors.toList());

4.Collect: 将Stream中的元素收集到一个结果容器中,如集合

List<String> nameList = names.stream().collect(Collectors.toList());

4.1将流转为map

//用stream将name转为map集合
Map<Integer, String> collect1 = Arrays.stream(names).collect(Collectors.toMap(
       s -> s.length(),
       s -> s,
       (s1, s2) -> s1 + "," + s2 //出现两个相同的key时,合并value
));
//用stream将name转为map集合,并合并相同长度的name
System.out.println(collect1);

Map<Integer, List<String>> collect = Arrays.stream(names).collect(Collectors.groupingBy(String::length));
System.out.println(collect);

5.Match: 检查Stream中的元素是否匹配给定的条件

boolean allNamesStartWithJ = names.stream().allMatch(name -> name.startsWith("J"));

6.Reduce: 使用给定的函数,将Stream中的元素累积合并成一个汇总结果

String joinedNames = names.stream().reduce("", (a, b) -> a + ", " + b);

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 8引入了Stream API,它是一种新的处理集合的方式,可以用更简洁、更易读的代码处理集合数据。Stream API提供了非常方便的、高效的数据处理方式,包括筛选、排序、映射、归约等。 下面是一些Stream的常用操作: 1. filter():筛选符合条件的元素 ```java List<String> list = Arrays.asList("apple", "orange", "banana", "pear", "peach"); List<String> result = list.stream().filter(str -> str.contains("e")).collect(Collectors.toList()); ``` 2. map():将元素转换成其他形式或提取信息 ```java List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5); List<Integer> result = nums.stream().map(num -> num * num).collect(Collectors.toList()); ``` 3. sorted():对元素进行排序 ```java List<Integer> nums = Arrays.asList(5, 3, 1, 2, 4); List<Integer> result = nums.stream().sorted().collect(Collectors.toList()); ``` 4. distinct():去重 ```java List<Integer> nums = Arrays.asList(1, 2, 3, 3, 4, 4, 5); List<Integer> result = nums.stream().distinct().collect(Collectors.toList()); ``` 5. limit():截取中前n个元素 ```java List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5); List<Integer> result = nums.stream().limit(3).collect(Collectors.toList()); ``` 6. skip():跳过中前n个元素 ```java List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5); List<Integer> result = nums.stream().skip(3).collect(Collectors.toList()); ``` 7. reduce():将中元素归约为一个值 ```java List<Integer> nums = Arrays.asList(1, 2, 3, 4, 5); int result = nums.stream().reduce(0, (a, b) -> a + b); ``` 这些操作只是Stream API中的一部分,还有很多其他操作可以使用Stream API可以让我们更加方便地处理集合数据,提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值