当前位置: 首页 > 面试题库 >

将对象添加到ArrayList并在以后修改

钱志义
2023-03-14
问题内容

如果我有一个ArrayList,并向其中添加了一个对象,后来又修改了该对象,此更改是否会反映在ArrayList中?还是将对象添加到ArrayList时,Java创建了一个副本并将其添加到ArrayList?

如果将对此对象的引用更改为null怎么办?这是否意味着ArrayList中的对象现在也为空?


问题答案:

这个变化会反映在ArrayList中吗?

是的,因为您在列表中添加了对该对象的 引用 。您添加的引用仍将指向同一对象(已修改)。

还是将对象添加到ArrayList时,Java创建了一个副本并将其添加到ArrayList?

不,它不会复制对象。(它将引用复制到对象。)

如果将对此对象的引用更改为null怎么办? 这是否意味着ArrayList中的对象现在也为空?

否,因为原始参考的内容在添加到列表时已 复制 。(请记住,复制的是 引用 ,而不是对象。)

示范:

StringBuffer sb = new StringBuffer("foo");

List<StringBuffer> list = new ArrayList<StringBuffer>();
list.add(sb);

System.out.println(list);   // prints [foo]
sb.append("bar");

System.out.println(list);   // prints [foobar]

sb = null;

System.out.println(list);   // still prints [foobar]


 类似资料:
  • 问题内容: 我想向中添加一个对象,但是每次我向具有3个属性的新对象添加时,都会出现错误。 在这里,我正在尝试创建其对象并将其传递给的类。 问题答案: 创建对象时需要使用运算符 要不然 并且您的构造函数不应包含。否则它将成为您班上的一个方法。

  • 这里有两个类,查询语句和Stackov。arraylist用于存储查询语句类的对象。但是最近添加的对象覆盖了前一个对象。如何添加对象以使它们不被覆盖? QuerySentence.java Stackov.java

  • 问题内容: 问题发生在 包含该行的代码位于 所有这一切都在里面,这里是一个 当我触摸时,它可能会激活,这将创建另一个具有不同属性的属性,这些属性会从屏幕上掉下来并在不到一秒钟的时间内销毁自己。这是我创建粒子效果的方式。我们可以将其称为“粒子” ,就像构造函数中的参数一样。 一切正常,直到我添加另一个main为止。现在,我同时在屏幕上有两个,如果我触摸最新的,它可以正常工作并启动粒子。 但是,如果我

  • 问题内容: 我认为这是一个非常简单的问题,但我不知道如何正确执行此操作。 我有一个空的arraylist: 我有一些要添加的对象,每个对象必须位于某个位置。但是,有必要可以按每种可能的顺序添加它们。当我尝试此操作时,它不起作用,我得到了: 我曾尝试是填充用,然后做以上。它有效,但是我认为这是一个可怕的解决方案。还有另一种方法吗? 问题答案: 您可以这样做: 将对象2添加到位置2后,它将把对象3移动

  • 问题内容: 我有一个特定的类C的arraylist。 C类具有两个属性,即。 现在,当我将C类型的对象添加到ArrayList myList时,我想检查列表中是否已经存在对象,且其str1和str2的值与该对象的参数值(str1和str2)相匹配我要补充。 有什么有效的方法可以执行此操作,而不必每次都遍历完整列表并检查参数之间是否匹配? 问题答案: 您需要重写C类中的方法。 例如 然后,可以调用m

  • 我想编写一个名为addNewPhone(Phone newPhone)的方法,将一个Phone添加到一个电话数组列表中; 电话类别: 车间类别: 主要类: 我知道我需要返回ArrayList,并且我需要在这个方法中接收Phone type对象,然后它应该返回ArrayList和一个新的phones,但我不知道为什么它不起作用。 Eclipse显示我符合的方法:“newPhone无法解析或未归档”。