首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >变量不保存当前列表大小

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

Stack Overflow用户
提问于 2017-06-06 08:08:13
回答 5查看 74关注 0票数 1

我这里有一段代码:

代码语言:javascript
运行
复制
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);

这就是输出:

代码语言:javascript
运行
复制
0
0

但应该是:

代码语言:javascript
运行
复制
2
4

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

谢谢你帮我!

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2017-06-06 08:09:16

在执行此int size = s1.size();时,列表为空。因此,size是一个基本值,不会根据列表的大小自动更新!

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

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2017-06-06 08:10:51

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

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

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

代码语言:javascript
运行
复制
/**
 * Returns the number of elements in this list.
 *
 * @return the number of elements in this list
 */
public int size() {
    return size;
}

因此你不需要你的变量。只需调用s1.size()来获取列表的当前大小。

票数 2
EN

Stack Overflow用户

发布于 2017-06-06 08:09:52

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44384610

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档