Tag: distinct values

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

如果我有: List listInts = { 1, 1, 3, 77, 2, 19, 77, 123, 14, 123… } 在Java中,什么是创建List listDistinctInts的有效方法, List listDistinctInts包含List listDistinctInts中的不同值? 我的想法是创建一个Set setInts其中包含Set setInts中的所有值,然后调用List listDistinctInts = new ArrayList(setInts); 但这似乎效率低下 – 使用Java 7是否有更好的解决方案? 我没有使用Java 8,但我相信使用它我可以做这样的事情(?): List listDistinctInts = listInts.stream().distinct().collect(Collectors.toList()); 这会比上面的方法更高效和/或在Java 8中有更有效的方法吗? 最后,(我知道,如果我只关心listInts中不同元素的数量 ,那么提出多个问题可能会令人不悦,但这是直接相关的)是否有更有效的方法来获取该值(在Java 7和8中) – 首先不创建所有不同元素的列表或集合? 我最感兴趣的是使用本机Java方法来实现这一点并避免重新发明任何轮子,但如果它们提供更好的清晰度或性能,则会考虑手动代码或库。 我已经阅读了这个相关的问题Java – 不同的对象列表,但是它并不完全清楚Java 7和8方法之间的性能差异,或者是否有更好的技术?