2012-02-17 66 views
18

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

有没有什么办法可以在不迭代整个TreeSet的情况下完成此任务,然后将每个对象手动添加到ArrayList中?

+0

是否有可能放松的方法签名接受一个单纯的收藏?这样不需要复制。 – 2012-02-17 05:11:50

回答

43

如何:

new ArrayList<T>(set); 
+3

这是最好的你会得到。没有不需要线性时间的解决方案。 – 2012-02-17 07:01:09

3

ArrayList中有很好的符合该法案的便捷方法addAll

final Set<Object> set = ... 
List<Object> list = new ArrayList<Object>(someBigNum); 
list.addAll(set); 
+4

someBigNum可能是set.size() – 2012-02-17 04:21:12

+1

someBigNum在这里很具误导性......你不需要大数字。你只需要set.size(),因为kuldeep指出 – 2014-05-18 03:29:46