30

我有一个包含 > 100k 个对象的 TreeSet。我有另一种需要 ArrayList 作为参数的方法。

有什么方法可以在不迭代整个 TreeSet 然后手动将每个对象添加到 ArrayList 的情况下完成此操作?

4

4 回答 4

68

这个怎么样:

new ArrayList<T>(set);

对于 Java 7 及更高版本,这可以简化,因为类型参数<T>可以替换为菱形类型<>

new ArrayList<>(set);
于 2012-02-17T03:58:54.500 回答
5

ArrayList 有一个很方便的方法addAll,非常符合要求:

final Set<Object> set = ...
List<Object> list = new ArrayList<Object>(someBigNum);
list.addAll(set);
于 2012-02-17T03:21:43.483 回答
1

如果使用Eclipse Collections,它具有超能力并由 Goldman Sachs 开发,则有toList()

MutableSortedSet<Object> set = SortedSets.mutable.empty();
...
return set.toList();

提供一个比较器也是可能的:

MutableSortedSet<Object> set = SortedSets.mutable.of(comparator);
...
return set.toList();
于 2020-07-02T06:28:24.603 回答
1

我们可以使用以下几种方法将 TreeSet 转换为 ArrayList

  1. 使用 ArrayList 构造函数 在此方法中,我们将 TreeSet 作为参数传递给 ArrayList 构造函数

    List<String> list = new ArrayList<String>(trreset);
    

从参考中阅读更多详细信息如何将 TreeSet 转换为 ArrayList

  1. 使用 AddAll() 方法 以这种方式,我们将使用 addAll() 方法将 TreeSet 添加到 ArrayList 中

    ArrayList<String> arrayList = new ArrayList<String>();
    arrayList.addAll(treeSet);
    
  2. 迭代 TreeSet 并将元素一个一个添加到 ArrayList 中。

于 2021-02-15T06:48:41.657 回答