Java Can';是否在ArrayList中添加对象?
您好,我正在尝试将一个对象添加到Arraylist中,我正在使用Java。但它并没有像我预期的那样起作用 假设我们有一个类Java Can';是否在ArrayList中添加对象?,java,optimization,Java,Optimization,您好,我正在尝试将一个对象添加到Arraylist中,我正在使用Java。但它并没有像我预期的那样起作用 假设我们有一个类句子,所以代码看起来像 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 i
句子
,所以代码看起来像
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);
}
ArrayList结果=新建ArrayList();
for(int i=0;i您的s
变量始终引用同一个对象。看起来您正在添加同一个对象10次,在for循环结束时,它的字符串将等于“9”
且其int等于9
在第二种情况下,您将向ArrayList
中的单个句子
实例添加10个指针
要在ArrayList
中插入10个指针,必须使用10语句
我认为您正在处理Java中的按值传递和按引用传递,为了澄清这一点,请看一看
也可能对您有所帮助。ArrayList result=new ArrayList();
ArrayList<Sentence> result = new ArrayList<Sentence>();
for (int i =0; i<10;i++)
{
result.add(new Sentence(i.toString(),i));
}
对于(int i=0;i以防止重复对象。在使用之前始终实例化它们。这样,您的列表将有n个唯一对象,您确定结果“将变为空”吗?您应该获得一个包含10个对同一对象的引用的列表。这不是优化,您不需要它。您的意思是我的ArrayList将只获得一个对象吗?在我的示例之后,它将只获得具有i=9
的对象。该列表将包含对单个句子的10个引用。句子将具有ei=9
。是的,这就是我的意思。你需要调用构造函数n次以获得n个对象。你现在所做的只是对一个对象进行修改,并存储对它的n个引用。我明白了,所以在这种情况下,我无法避免创建这些新对象。当然,你需要在内存中创建10个句子
对象。
ArrayList<Sentence> result = new ArrayList<Sentence>();
for (int i =0; i<10;i++)
{
result.add(new Sentence(i.toString(),i));
}