有 Java 编程相关的问题?

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

java变量不保存当前列表大小

我这里有一段代码:

List<String> s1 = new ArrayList<String>();
int size = s1.size();

s1.add("A");
s1.add("B");
System.out.println(size);
s1.add("C");
s1.add("D");
System.out.println(size);

这就是输出:

0
0

但它应该是:

2
4

出什么问题了?为什么当我打电话给她时,可变大小不能得到当前列表的大小

谢谢你帮我


共 (3) 个答案

  1. # 1 楼答案

    要打印正确的大小,您应该在案例中始终使用s1.size();。由于列表是可修改的,所以将其存储在局部变量中不会有帮助,除非您有不可修改的列表。因为局部变量不会在列表中每次添加/删除新条目时更新

    在向列表中添加数据后,应该调用s1.size();

  2. # 2 楼答案

    当你这么做的时候,列表是空的。所以size是一个基本值,不会根据列表的大小自动更新

    每次列表更改其大小时,都需要刷新该值

    s1.add("A");
    s1.add("B");
    size = s1.size();   // update size
    System.out.println(size);
    s1.add("C");
    s1.add("D");
    size = s1.size();   // update size
    System.out.println(size);
    
  3. # 3 楼答案

    size包含执行int size = s1.size();时分配给它的值,即0,因为当时列表为空

    当列表被修改时,它不会被自动修改。它与列表的大小无关

    您确实有一个变量,其值在列表大小更改时更新。这是ArrayList类的size变量,当调用size()方法时,会得到该变量的值:

    /**
     * Returns the number of elements in this list.
     *
     * @return the number of elements in this list
     */
    public int size() {
        return size;
    }
    

    因此,不需要变量。只需调用s1.size()即可获得列表的当前大小