有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

ArrayList中的Java空元素

我只是有一个谷歌无法解决的简单问题。因此,如果我将一个ArrayList的一些元素设置为null,它们仍然会被计算在list.size()中,并且剩余元素的索引仍然保持不变吗

如果没有,你们谁能建议我怎么做


共 (3) 个答案

  1. # 1 楼答案

    从测试代码或阅读源代码推断类行为是一个坏主意,这也是因为ArrayList不是最终版本,您获得的类可能是ArrayList的扩展版本,具有不同的实现

    只要阅读List和ArrayList契约,它们必须在扩展类中得到满足:

    List:

    有序的集合(也称为序列)。。。 一些列表实现对它们可能包含的元素有限制。例如,有些实现禁止空元素,有些实现对其元素的类型有限制

    ArrayList:

    列表接口的可调整大小的数组实现。实现所有可选的列表操作,允许所有元素,包括null

    合约上说ArrayList允许空元素,所以你的问题的答案是肯定的,列表大小和索引保持不变

  2. # 2 楼答案

    是的,看看add()方法实现,例如:

    public boolean add(E object) {
        Object[] a = array;
        int s = size;
        if (s == a.length) {
            Object[] newArray = new Object[s +
                    (s < (MIN_CAPACITY_INCREMENT / 2) ?
                     MIN_CAPACITY_INCREMENT : s >> 1)];
            System.arraycopy(a, 0, newArray, 0, s);
            array = a = newArray;
        }
        a[s] = object;
        size = s + 1;
        modCount++;
        return true;
    }
    

    由于ArrayList.size()只返回size变量的值,很明显,如果添加null,大小将增加1,因此,是的,null被计数