我在另一个接受java.util.Collection
个对象的API中调用方法。我查看了该方法,它会在执行任务之前立即将集合中的所有内容复制到新的ArrayList
中。
这让我想知道:我可以使用什么绝对最低开销的Java Collection来快速组装此方法的参数?
答案 0 :(得分:6)
这取决于它如何复制元素,但如果它创建了ArrayList
- 这样的副本
new ArrayList<Something>(inputCollection);
或如果确实
someCopy.addAll(inputCollection);
然后它会经过inputCollection.toArray()
,这可能是ArrayList
最好实现的。
答案 1 :(得分:0)
这取决于您的源数据。
如果你的源数据已经是一个数组,并且其他人不会使用该数组,那么最快的方法是使用一个瘦包装器:
final Object[] source = ...
Collection colllection = new AbstractCollection(){
public Object[] toArray(){ return source; }
// other methods don't matter
}
答案 2 :(得分:0)
如果您在谈论内存占用,请查看this table中的memory-measurer。 Arrays$ArrayList
遗失,但可能是ArrayList
(Arrays.asList(...)
)的替代方案。
更新:我在github中更新了项目新位置的原始链接。考虑到这些指标已有几年的历史了。