3 回答
牧羊人nacy
TA贡献1862条经验 获得超7个赞
我同意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。请注意,可以通过Trove(和其他位置)使用Set和Map的更有效实现。
慕标琳琳
TA贡献1830条经验 获得超9个赞
如果您使用Guava库:
Set<Foo> set = Sets.newHashSet(list);
或更好:
Set<Foo> set = ImmutableSet.copyOf(list);
添加回答
举报
0/150
提交
取消