在Java中将List转换为Set的最简单方法

在Java中将List转换为Set的最简单方法是什么?


Set<Foo> foo = new HashSet<Foo>(myList);

我同意sepp2k,但还有一些其他细节可能很重要:

new HashSet<Foo>(myList);

会给你一个没有重复的未排序集合。 在这种情况下,使用对象上的.equals()方法识别重复。 这与.hashCode()方法结合使用。 (关于平等的更多信息请看这里)

给出排序集的替代方法是:

new TreeSet<Foo>(myList);

如果Foo实现了Comparable,这将起作用。 如果没有,那么你可能想使用比较器:

Set<Foo> lSet = new TreeSet<Foo>(someComparator);
lSet.addAll(myList);

这取决于compareTo()(来自可比较的接口)或compare()(来自比较器)以确保唯一性。 所以,如果您只关心唯一性,请使用HashSet。 如果您在排序后,请考虑TreeSet。 (记住:稍后优化!)如果时间效率问题在空间效率问题上使用HashSet,请查看TreeSet。 请注意,更高效的Set和Map实现可以通过Trove(和其他位置)获得。


如果您使用番石榴图书馆:

Set<Foo> set = Sets.newHashSet(list);

或更好:

Set<Foo> set = ImmutableSet.copyOf(list);
链接地址: http://www.djcxy.com/p/19877.html

上一篇: Easiest way to convert a List to a Set in Java

下一篇: How can I concatenate two arrays in Java?