小编Mat*_*ugh的帖子

在Java 7和8中从现有列表创建不同的列表?

如果我有:

List<Integer> listInts = { 1, 1, 3, 77, 2, 19, 77, 123, 14, 123... }
Run Code Online (Sandbox Code Playgroud)

在Java中,什么是创建List<Integer> listDistinctInts仅包含不同值的有效方法listInts

我的直接想法是创建一个Set<Integer> setInts包含所有值listInts然后调用List<Integer> listDistinctInts = new ArrayList<>(setInts);

但这似乎效率低下 - 使用Java 7是否有更好的解决方案?

我没有使用Java 8,但我相信使用它我可以做这样的事情(?):

List<Integer> listDistinctInts = listInts.stream().distinct().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

这会比上面的方法更高效和/或在Java 8中有更有效的方法吗?

最后,(我知道,如果我只关心不同元素的数量,那么提出多个问题可能会不受欢迎,但这是直接相关的)是否listInts有更有效的方法来获得该值(在Java 7和8中) -没有先创建一个列表或所有不同元素的集合?

我最感兴趣的是使用本机Java方法来实现这一点并避免重新发明任何轮子,但如果它们提供更好的清晰度或性能,则会考虑手动代码或库.我已经阅读了这个相关的问题Java - 不同的对象列表,但是它并不完全清楚Java 7和8方法之间的性能差异,或者是否有更好的技术?

java list distinct-values java-7 java-8

20
推荐指数
2
解决办法
3万
查看次数

标签 统计

distinct-values ×1

java ×1

java-7 ×1

java-8 ×1

list ×1