在Java中将列表转换为集合的最简单方法

2022-08-31 04:06:22

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


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

答案 2

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

new HashSet<Foo>(myList);

将为您提供一个没有重复项的未排序集。在这种情况下,在对象上使用 .equals() 方法标识重复。这是与 .hashCode() 方法结合使用完成的。(有关平等的更多信息,请查看此处)

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

new TreeSet<Foo>(myList);

如果 Foo 实现了可比性,则此方法有效。如果没有,那么您可能需要使用比较器:

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

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