Java8中常用的stream方法,工作中经常用到【持续更新】

本文介绍了Java8中StreamAPI提供的关键功能,包括filter、map、flatMap、distinct、sorted、limit、skip和reduce等方法,展示了如何使用这些方法处理和操作集合数据。

Java 8 中的 Stream API 提供了一种更加函数式和便捷的方式来处理集合数据。以下是一些常用的 Stream 方法,以及它们的简要说明和对应的例子。

  1. filter(Predicate):根据指定的条件过滤集合中的元素。

    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
    List<Integer> evenNumbers = numbers.stream()
                                       .filter(n -> n % 2 == 0)
                                       .collect(Collectors.toList());
    // 输出结果为 [2, 4]
    
  2. map(Function):对集合中的每个元素进行映射转换。

    List<String> words = Arrays.asList("hello", "world", "java");
    List<Integer> wordLengths = words.stream()
                                    .map(String::length)
                                    .collect(Collectors.toList());
    // 输出结果为 [5, 5, 4]
    
  3. flatMap(Function):将多个 Stream 合并成一个 Stream。

    List<List<Integer>> nestedNumbers = Arrays.asList(
            Arrays.asList(1, 2),
            Arrays.asList(3, 4),
            Arrays.asList(5, 6)
    );
    List<Integer> allNumbers = nestedNumbers.stream()
                                            .flatMap(List::stream)
                                            .collect(Collectors.toList());
    // 输出结果为 [1, 2, 3, 4, 5, 6]
    
  4. distinct():去除集合中的重复元素。

    List<Integer> numbers = Arrays.asList(1, 2, 3, 3, 4, 4, 5);
    List<Integer> distinctNumbers = numbers.stream()
                                           .distinct()
                                           .collect(Collectors.toList());
    // 输出结果为 [1, 2, 3, 4, 5]
    
  5. sorted():对集合中的元素进行排序。

    List<Integer> numbers = Arrays.asList(3, 1, 4, 1, 5, 9, 2, 6);
    List<Integer> sortedNumbers = numbers.stream()
                                         .sorted()
                                         .collect(Collectors.toList());
    // 输出结果为 [1, 1, 2, 3, 4, 5, 6, 9]
    
  6. limit(long):限制 Stream 的大小。

    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
    List<Integer> limitedNumbers = numbers.stream()
                                          .limit(5)
                                          .collect(Collectors.toList());
    // 输出结果为 [1, 2, 3, 4, 5]
    
  7. skip(long):跳过指定数量的元素。

    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
    List<Integer> skippedNumbers = numbers.stream()
                                          .skip(5)
                                          .collect(Collectors.toList());
    // 输出结果为 [6, 7, 8, 9, 10]
    
  8. reduce():通过指定的操作对元素进行归约。

    List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);
    Optional<Integer> sum = numbers.stream()
                                   .reduce((a, b) -> a + b);
    // 输出结果为 15
    

这些只是 Stream API 中的一部分方法,但是它们是最常用的方法之一。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值