如果列表中的元素数量大于Integer.MAX_VALUE,LinkedList是否会收缩?

时间:2014-04-08 10:41:21

标签: java list linked-list size contract

java.util.List#size()

的java doc
  

返回此列表中的元素数。如果此列表包含   超过Integer.MAX_VALUE元素,返回Integer.MAX_VALUE。

研究java.util.LinkedList源代码:

公共方法:

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;
 }

因此,如果在添加元素大小等于Integer.MAX_VALUE之前,大小将变为 -Integer.MAX_VALUE-1

方法大小只返回没有检查的字段值:

 public int size() {
    return size;
 }

你怎么看?

1 个答案:

答案 0 :(得分:-1)

在您设法在列表中放置超过20亿个对象之前很久就会耗尽内存,因此无需担心。