![]() |
1
12
这个
首先,让我们看看
1) 打电话的人想 现有阵列(如有可能);以及 2) 调用方希望指定返回数组的组件类型。
处理case(1)是一个相当微妙的API问题。调用方希望重用数组,因此显然需要传入它。不像没有参数
调用方传入一个可重用的数组,返回值是复制到该数组中的元素数。不需要返回数组,因为调用方已经有了对它的引用。但是如果数组太小呢?好吧,也许可以抛出一个例外。事实上,这就是 Vector.copyInto 做。
啊!
但现在我们有另一个问题。我们不再有方法告诉调用方从集合复制到数组中的元素的数量。如果目标数组是新分配的,或者数组恰好大小正确,那么数组的长度就是复制的元素数。如果目标数组大于复制的元素数,则该方法尝试通过写入
我不认为我见过任何代码重用数组或者用这种方式检查空值。这可能是早期内存分配和垃圾收集成本高昂时的遗留问题,因此人们希望尽可能多地重用内存。最近,使用此方法的公认习惯用法是上面描述的第二个用例,即按如下方式建立所需的数组组件类型:
这允许调用方指定数组的组件类型,但它允许集合提供大小信息。 |
![]() |
2
3
刚好在…之后
原始列表中的最后一个元素,因此在第一个示例中,列表是空的,因此它将索引为0的元素(第一个元素是
在上一个示例中,最后一个元素恰好位于原始列表中最后一个元素的后面。知道上一个场景并不能真正帮助确定列表的大小,因为 做 允许的空值。 但如果列表不允许空值(例如。 immutable lists introduced in Java 9 ),则这很有用,因为在循环返回的数组时, 您不想处理额外的元素 |
![]() |
3
2
从JDK 9源代码
在
如果要转换为数组的列表的大小为
有了单子列表,
如果列表的大小比数组的长度小一个,
|
![]() |
4
0
如果输入数组的大小大于此列表的大小(这意味着我们可以将列表的所有内容复制到此数组中,因为它的长度足够大),则复制所有列表内容(实际上索引等于列表的大小)后,数组中的下一个元素引用将设置为空。 |
![]() |
Giffyguy · 如何限制在构造向量后调用'resize()'? 3 年前 |
![]() |
vytaute · 返回表类型时Oracle函数中的类型错误 3 年前 |
![]() |
bbgghh · 在scala中连接两个列表时如何处理不匹配的键 3 年前 |
![]() |
dev-chicco · Laravel系列寻找常见物品 3 年前 |
![]() |
Mitch · Laravel-雄辩的单品合并系列 7 年前 |
![]() |
Kieran · 为什么类X可以从集合继承<X> 7 年前 |
![]() |
John · 如何在不返回集合本身的情况下返回集合的数据? 7 年前 |
![]() |
Niklas Mertsch · 在泛型集合中实现移除(对象o) 7 年前 |