您好我正在尝试将对象添加到Arraylist中,我正在使用Java。但它并不像我想的那样有效。
假设我们有一个类Sentence
,所以代码看起来像
ArrayList<Sentence> result = new ArrayList<Sentence>();
for (int i =0; i<10;i++)
{
Sentence s = new Sentence(i.toString(),i);
//there is a string and an int in this Sentence object need to be set
result.add(s);
}
上面的方法正常。但我希望加快我的代码,所以我只尝试新的一个obejct,代码变成:
ArrayList<Sentence> result = new ArrayList<Sentence>();
Sentence s = new Sentence(" ",0);
for (int i =0; i<10;i++)
{
s.setString(i.toString());
s.setInt(i);
result.add(s);
}
但是,在这种情况下,我的结果将变为空。我想我确实更改了对象s
中的内容,但我不知道为什么它在result.add(s)
期间不起作用。
非常感谢你的回复。
答案 0 :(得分:5)
您的s
变量始终引用同一个对象。看起来你要添加10次相同的对象,在for循环结束时,它的字符串将等于"9"
,其int等于9
。
答案 1 :(得分:3)
在第二种情况下,您在Sentence
中向单个ArrayList
实例添加了10个指针。
您必须使10 Sentence
在ArrayList
中插入10个指针。
我认为你正在弄乱传递值并在Java中通过引用传递,为了澄清这一点,请看看this post。
This post也可能对您有帮助。
答案 2 :(得分:0)
ArrayList<Sentence> result = new ArrayList<Sentence>();
for (int i =0; i<10;i++)
{
result.add(new Sentence(i.toString(),i));
}
如果您想创建比使用此示例更少的代码行,但它不一定更优化。
答案 3 :(得分:0)
为了防止重复的对象。在使用之前始终实例化它们。这样,您的List将拥有n个唯一对象,