在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