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