[英]Is LinkedList breaks contract if amount of elements in list greater than Integer.MAX_VALUE?
java doc for java.util.List#size()
java.util.List#size()
java 文档
Returns the number of elements in this list.返回此列表中的元素数。 If this list contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.如果此列表包含多个 Integer.MAX_VALUE 元素,则返回 Integer.MAX_VALUE。
Research java.util.LinkedList
source code:研究java.util.LinkedList
源码:
public method:公共方法:
public boolean add(E e) {
addBefore(e, header);
return true;
}
private Entry<E> addBefore(E e, Entry<E> entry) {
Entry<E> newEntry = new Entry<E>(e, entry, entry.previous);
newEntry.previous.next = newEntry;
newEntry.next.previous = newEntry;
size++;
modCount++;
return newEntry;
}
Thus if before adding element size equals Integer.MAX_VALUE
size will become -Integer.MAX_VALUE-1
因此如果在添加元素之前等于Integer.MAX_VALUE
大小将变为-Integer.MAX_VALUE-1
method size just returns field value without checks:方法大小只返回字段值而不检查:
public int size() {
return size;
}
What do you think about it?你怎么看待这件事?
在您设法将超过 20 亿个对象放入列表之前很久,您的内存就会耗尽,因此无需担心。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.