我有一个包含 > 100k 个对象的 TreeSet。我有另一种需要 ArrayList 作为参数的方法。
有什么方法可以在不迭代整个 TreeSet 然后手动将每个对象添加到 ArrayList 的情况下完成此操作?
这个怎么样:
new ArrayList<T>(set);
对于 Java 7 及更高版本,这可以简化,因为类型参数<T>
可以替换为菱形类型<>
:
new ArrayList<>(set);
ArrayList 有一个很方便的方法addAll
,非常符合要求:
final Set<Object> set = ...
List<Object> list = new ArrayList<Object>(someBigNum);
list.addAll(set);
如果使用Eclipse Collections,它具有超能力并由 Goldman Sachs 开发,则有toList()
:
MutableSortedSet<Object> set = SortedSets.mutable.empty();
...
return set.toList();
提供一个比较器也是可能的:
MutableSortedSet<Object> set = SortedSets.mutable.of(comparator);
...
return set.toList();
我们可以使用以下几种方法将 TreeSet 转换为 ArrayList
使用 ArrayList 构造函数 在此方法中,我们将 TreeSet 作为参数传递给 ArrayList 构造函数
List<String> list = new ArrayList<String>(trreset);
从参考中阅读更多详细信息如何将 TreeSet 转换为 ArrayList
使用 AddAll() 方法 以这种方式,我们将使用 addAll() 方法将 TreeSet 添加到 ArrayList 中
ArrayList<String> arrayList = new ArrayList<String>();
arrayList.addAll(treeSet);
迭代 TreeSet 并将元素一个一个添加到 ArrayList 中。