简体   繁体   English

如果列表中的元素数量大于 Integer.MAX_VALUE,LinkedList 是否违反合同?

[英]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.

相关问题 如何知道float值是否大于Integer.MAX_VALUE? - How to know if the float value is greater than Integer.MAX_VALUE? 如果元素总数大于Integer.MAX_VALUE,我们可以使用IntStream#sum吗? - Can we use IntStream#sum, If sum of elements is greater than the Integer.MAX_VALUE? 如果实际大小大于 Integer.MAX_VALUE,如何找出 java.util.List 的大小? - How can I find out the size of a java.util.List if the actual size is greater than the Integer.MAX_VALUE? 可以String保持大于Integer.MAX_VALUE个字符数 - Can String hold greater than Integer.MAX_VALUE number of character 解析整数字符串(大于Integer.MAX_VALUE) - Parse integer string (larger than Integer.MAX_VALUE) Java 数据结构,用于任意大量元素且大于 Integer.MAX_VALUE - Java data structure for an arbitrary large number of elements and larger than Integer.MAX_VALUE 选择大于Integer.MAX_VALUE的范围内的随机整数? - Choose random integer in a range bigger than Integer.MAX_VALUE? 如何在jvm中创建多个Integer.MAX_VALUE对象? - How to create more than Integer.MAX_VALUE objects in a jvm? 如果我组件的preferredSize比Integer.MAX_VALUE高怎么办? - What if the preferredSize of my component is taller than Integer.MAX_VALUE? 映射条目高于Integer.MAX_VALUE - Map entries higher than Integer.MAX_VALUE
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM