Java ArrayList复制而不创建新数组

Java ArrayList复制而不创建新数组,java,memory,collections,arraylist,copy,Java,Memory,Collections,Arraylist,Copy,我有一个带有底层数组的列表实现(不是我的) 该实现不直接授予对数组的访问权,而仅通过所实现的列表接口方法授予访问权(就像ArrayList实现一样) 在某些时候,我将无法使用此列表(因为它的实现),但我需要访问(只读)数据(底层数组) 有没有办法做到这一点?在不创建数组副本的情况下,是否可以使用旧数组的基础数组创建新的数组列表?无论如何,您必须有一个新数组来支持数组列表,那么为什么调用c.toArray()会出现问题呢?唯一的低效是如果它在调用数组的分支中结束。copyOfArrayList(i

我有一个带有底层数组的列表实现(不是我的)

该实现不直接授予对数组的访问权,而仅通过所实现的列表接口方法授予访问权(就像ArrayList实现一样)

在某些时候,我将无法使用此列表(因为它的实现),但我需要访问(只读)数据(底层数组)


有没有办法做到这一点?在不创建数组副本的情况下,是否可以使用旧数组的基础数组创建新的数组列表?

无论如何,您必须有一个新数组来支持
数组列表
,那么为什么调用
c.toArray()
会出现问题呢?唯一的低效是如果它在调用
数组的分支中结束。copyOf

ArrayList(int)也会创建一个数组

public ArrayList(int initialCapacity) {
   ...
   this.elementData = new Object[initialCapacity];
}
但是ArrayList(Collection)使用快速复制

public Object[] toArray() {
    return Arrays.copyOf(elementData, size);
}

现在完全不清楚你想要实现什么。现有集合的视图?如果将条目添加到原始集合中,您希望发生什么?还是换新的?请澄清。原始列表数组上的更改将“写入”克隆列表。我们的目标是让一个新列表不绑定到原始列表实现,但不需要复制庞大的元素数组……那么,您如何期望它们在不复制的情况下保持独立呢?你应该对你的问题进行编辑,以便更清楚地了解你想要什么。但是,在这个列表下面有一个数组吗?你能做到吗?您是否需要能够将项目添加到结果中?Arrays.asList对您来说够了吗?你仍然没有提供足够的信息,你应该把额外的信息放在问题中,而不是放在评论中。如果没有任何东西可以访问数组,那么简单的答案是没有。。。列表界面中没有任何帮助。或者至少,其中一些方法可能对您有用,但我们不知道现有实现的哪些方面会导致问题。请重新表述您的答案,以便我可以接受。谢谢