java8 stream

.flatMap
  1. listOfLists.stream() 将外层的列表转换为一个流,其中每个元素都是一个 List<String>
  2. .flatMap(innerList -> innerList.stream()) 对流中的每个 innerList 执行一个函数,该函数将 innerList 转换为一个新的流。然后,flatMap 将所有这些内部流连接成一个单一的流。
  3. .collect(Collectors.toList()) 将这个单一的流收集到一个新的列表中。
List<List<String>> listOfLists = Arrays.asList(  
    Arrays.asList("a", "b"),  
    Arrays.asList("c", "d", "e"),  
    Arrays.asList("f")  
);  
  
List<String> flattenedList = listOfLists.stream()  
    .flatMap(innerList -> innerList.stream()) // 将每个内部列表转换为一个流,并展平  
    .collect(Collectors.toList()); // 收集到一个列表中  
  
System.out.println(flattenedList); // 输出: [a, b, c, d, e, f]
Optional<OrgPO> opt = orgList.stream().filter(a -> a.getOrgCode().equals(orgCode)).findAny()
  1. stream():
    这是List接口中的一个方法,它将列表转换为一个Stream,以便我们可以对其进行各种操作。
  2. filter(a -> a.getOrgCode().equals(orgCode)):
    这是Stream API中的一个中间操作,用于过滤Stream中的元素。这里,我们使用了一个Lambda表达式a -> a.getOrgCode().equals(orgCode)作为filter方法的参数。这个Lambda表达式表示:对于Stream中的每一个OrgPO对象a,检查其orgCode属性是否等于给定的orgCode。如果等于,则该对象会被保留在Stream中;如果不等于,则该对象会被从Stream中移除。
  3. findAny():
    这是Stream API中的一个终端操作,用于从Stream中返回任意一个匹配的元素(如果存在的话)。由于我们之前已经使用filter方法过滤了Stream,所以findAny方法会返回第一个(或任意一个)与给定orgCode匹配的OrgPO对象。如果没有找到匹配的元素,则返回一个空的Optional<OrgPO>对象。
  4. Optional<OrgPO> opt:
    这是一个Optional<OrgPO>类型的变量,用于存储findAny方法的返回结果。Optional是Java 8引入的一个容器对象,用于可能不存在的值。它可以帮助我们避免空指针异常(NullPointerException),并提供了一种更优雅的方式来处理可能为null的值。在这个例子中,如果找到了匹配的OrgPO对象,则opt将包含一个非空的Optional对象,其中包含了该对象;如果没有找到匹配的元素,则opt将包含一个空的Optional对象。

 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java 8引入了Stream API,它是一种处理集合数据的新方式。Stream API提供了一种流式操作的方式,可以对集合进行过滤、映射、排序、聚合等操作,使得代码更加简洁、易读和高效。 Stream是一个来自数据源的元素队列并支持聚合操作。它可以是集合、数组、I/O channel、产生器等。Stream操作可以顺序执行,也可以并行执行。 Java 8 Stream API的特点包括: 1. 延迟执行:Stream操作通常是延迟执行的,只有在终止操作时才会触发实际的计算。 2. 内部迭代:Stream API使用内部迭代的方式,不需要显式地编写循环,使得代码更加简洁。 3. 函数式编程:Stream API支持函数式编程风格,可以通过Lambda表达式来定义操作。 4. 并行处理:Stream API提供了并行处理的能力,可以充分利用多核处理器的优势,提高处理速度。 使用Stream API可以通过一系列的中间操作和终止操作来对集合进行处理。中间操作包括过滤、映射、排序等操作,终止操作包括聚合、收集、遍历等操作。 下面是一些常用的Stream操作方法: 1. filter(Predicate<T> predicate):根据指定条件过滤元素。 2. map(Function<T, R> mapper):将元素进行映射转换。 3. sorted(Comparator<T> comparator):对元素进行排序。 4. distinct():去除重复的元素。 5. limit(long maxSize):限制元素的数量。 6. skip(long n):跳过指定数量的元素。 7. forEach(Consumer<T> action):对每个元素执行指定操作。 8. collect(Collector<T, A, R> collector):将元素收集到集合中。 9. reduce(BinaryOperator<T> accumulator):对元素进行归约操作。 10. parallel():启用并行处理。 以上只是Stream API的一部分常用操作,还有更多的操作方法可以根据具体需求使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值