摘要:从发布到现在,已有三年多了,也得到了广泛的应用,但似乎里面最重要的特性和对很多人来说还是很陌生。想通过介绍一些实际的问题和答案来讲解在现实开发中我们可以通过和可以做些什么,以及什么是正确的姿势。
从Java 8 2014 发布到现在,已有三年多了,JDK 8 也得到了广泛的应用,但似乎Java 8里面最重要的特性:Lambdas和Stream APIs对很多人来说还是很陌生。想通过介绍Stackoverflow一些实际的问题和答案来讲解在现实开发中我们可以通过Lambdas和Stream APIs可以做些什么,以及什么是正确的姿势。在介绍那些问答之前,我们先要对Java 8 和Stream APIs有些基本的了解,这里推荐几篇文章:
java.util.stream 库简介
Java 8 中的 Streams API 详解
What"s New in Java 8
如果你对Java 8 Lambds和Stream APIs还不是很了解,建议先把上面的几篇文章看几遍。
接下来是问答:
1. Java 8 List
有一个List
private MapnameMap(List choices) { final Map hashMap = new HashMap<>(); for (final Choice choice : choices) { hashMap.put(choice.getName(), choice); } return hashMap; }
【答案】
如果能确保Choice的name没有重复的
Mapresult = choices.stream().collect(Collectors.toMap(Choice::getName, Function.identity()));
如果name有重复的,上面的代码会抛IllegalStateException,要用下面的代码,
Map> result = choices.stream().collect(Collectors.groupingBy(Choice::getName));
2. How to Convert a Java 8 Stream to an Array?
什么是最简便的方式把一个Stream转换成数组:
【答案】
String[] strArray = Stream.of("a", "b", "c")toArray(size -> new String[size]); int[] intArray = IntStream.of(1, 2, 3).toArray();
3.Retrieving a List from a java.util.stream.Stream in Java 8
怎么把一个Stream转换成List?下面是我的尝试:
ListsourceLongList = Arrays.asList(1L, 10L, 50L, 80L, 100L, 120L, 133L, 333L); List targetLongList = new ArrayList<>(); sourceLongList.stream().filter(l -> l > 100).forEach(targetLongList::add);
【答案】
targetLongList = sourceLongList.stream() .filter(l -> l > 100) .collect(Collectors.toList());
这一篇的目的主要以学习前面推荐的几篇文章为主,和介绍了几个简单的问题,接下来在第二篇会介绍更多有兴趣的问答。
【更新】更多请参阅:Abacus-util.
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/70179.html
摘要:在这片文章里,主要介绍怎么用的开源框架来解答上一些经常被问到关于的问题用用用用用用用用 在这片文章里,主要介绍怎么用Java 8 Stream的开源框架 StreamEx来解答StackOverflow上一些经常被问到关于Java 8 Stream的问题: Convert Java 8 List into Map 用JDK Stream API: Map result = ch...
摘要:作为微服务的基础设施之一,背靠强大的生态社区,支撑技术体系。微服务实践为系列讲座,专题直播节,时长高达小时,包括目前最流行技术,深入源码分析,授人以渔的方式,帮助初学者深入浅出地掌握,为高阶从业人员抛砖引玉。 简介 目前业界最流行的微服务架构正在或者已被各种规模的互联网公司广泛接受和认可,业已成为互联网开发人员必备技术。无论是互联网、云计算还是大数据,Java平台已成为全栈的生态体系,...
阅读 3619·2021-11-16 11:41
阅读 2860·2021-09-23 11:45
阅读 656·2019-08-30 15:44
阅读 523·2019-08-30 13:10
阅读 1945·2019-08-30 12:49
阅读 3501·2019-08-28 17:51
阅读 1454·2019-08-26 12:20
阅读 683·2019-08-23 17:56