资讯专栏INFORMATION COLUMN

Java 8 Stream之实战篇

leoperfect / 740人阅读

摘要:在这片文章里,主要介绍怎么用的开源框架来解答上一些经常被问到关于的问题用用用用用用用用

在这片文章里,主要介绍怎么用Java 8 Stream的开源框架 StreamEx来解答StackOverflow上一些经常被问到关于Java 8 Stream的问题:

Convert Java 8 List into Map

用JDK Stream API:

Map result =
    choices.stream().collect(Collectors.toMap(Choice::getName,
                                              Function.identity()));

用StreamEx API:

Map result = StreamEx.of(choices).toMap(Choice::getName);

Custom thread pool in Java 8 parallel stream

用JDK Stream API:

ForkJoinPool forkJoinPool = new ForkJoinPool(2);
forkJoinPool.submit(() ->
    //parallel task here, for example
    IntStream.range(1, 1_000_000).parallel().filter(PrimesPrint::isPrime).collect(toList())
).get();

用StreamEx API:

IntStreamEx.range(1, 1_000_000).parallel(new ForkJoinPool(2))
           .filter(PrimesPrint::isPrime).toList();

Java 8 Distinct by property

用JDK Stream API:

public static  Predicate distinctByKey(Function keyExtractor) {
    Set seen = ConcurrentHashMap.newKeySet();
    return t -> seen.add(keyExtractor.apply(t));
}

persons.stream().filter(distinctByKey(Person::getName));

用StreamEx API:

StreamEx.of(persons).distinctBy(Person::getName);

Is it possible to cast a Stream in Java 8?

用JDK Stream API:

Stream.of(objects)
    .filter(Client.class::isInstance)
    .map(Client.class::cast)
    .map(Client::getID)
    .forEach(System.out::println);

用StreamEx API:

StreamEx.of(objects)
    .select(Client.class)
    .map(Client::getID)
    .forEach(System.out::println);

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/76524.html

相关文章

  • Java核心技术教程整理,长期更新

    以下是Java技术栈微信公众号发布的关于 Java 的技术干货,从以下几个方面汇总。 Java 基础篇 Java 集合篇 Java 多线程篇 Java JVM篇 Java 进阶篇 Java 新特性篇 Java 工具篇 Java 书籍篇 Java基础篇 8张图带你轻松温习 Java 知识 Java父类强制转换子类原则 一张图搞清楚 Java 异常机制 通用唯一标识码UUID的介绍及使用 字符串...

    Anchorer 评论0 收藏0
  • Java编程方法论:响应式RxJava与代码设计实战》序

    摘要:原文链接编程方法论响应式与代码设计实战序,来自于微信公众号次灵均阁正文内容在一月的架构和设计趋势报告中,响应式编程和函数式仍旧编列在第一季度的早期采纳者中。 原文链接:《Java编程方法论:响应式RxJava与代码设计实战》序,来自于微信公众号:次灵均阁 正文内容 在《2019 一月的InfoQ 架构和设计趋势报告》1中,响应式编程(Reactive Programming)和函数式...

    PAMPANG 评论0 收藏0
  • Top stackoverflow 问答系列Java 8 Stream (一)

    摘要:从发布到现在,已有三年多了,也得到了广泛的应用,但似乎里面最重要的特性和对很多人来说还是很陌生。想通过介绍一些实际的问题和答案来讲解在现实开发中我们可以通过和可以做些什么,以及什么是正确的姿势。 从Java 8 2014 发布到现在,已有三年多了,JDK 8 也得到了广泛的应用,但似乎Java 8里面最重要的特性:Lambdas和Stream APIs对很多人来说还是很陌生。想通过介绍...

    z2xy 评论0 收藏0
  • Nginx 最全小白实战教程三 (代理TCP

    摘要:确定侦听通配符地址的套接字是否只接受连接,或者是接受和连接。此参数配置侦听套接字的行为。某些操作系统支持使用,和套接字选项在每个套接字上设置保持活动参数。可以省略一个或两个参数,在这种情况下,相应套接字选项的系统默认设置将有效。 Nginx代理TCP主要是使用stream模块,这个功能是从1.9.0版本开始的。我用它来代理Mysql。 一、配置代码 stream { upstr...

    nanfeiyan 评论0 收藏0
  • 乐字节-Java8核心特性实战函数式接口

    摘要:大家好,上一篇小乐给大家讲述了乐字节核心特性表达式,点击回顾。接下来继续核心特性之函数式接口。感谢大家欣赏小乐带来的核心特性之函数式接口,接下来还会更多核心技术讲解,请关注乐字节如需要视频课程,请搜索乐字节腾讯课堂 大家好,上一篇小乐给大家讲述了《乐字节-Java8核心特性-Lambda表达式》,点击回顾。接下来继续:Java8核心特性之函数式接口。 什么时候可以使用Lambda?通常...

    niceforbear 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<