【问题标题】:Adding an Object to multiple lists/maps将对象添加到多个列表/地图
【发布时间】:2013-11-20 17:05:31
【问题描述】:
ArrayList<SomeObject> listSomeObject;
HashMap<String, SomeObject> hmSomeObject;

SomeObject so = new SomeObject();
listSomeObject.add(so);
hmSomeObject.put("key", so);

hmSomeObject.get("key").setSomeProp(5);

最后的set操作是否也会改变ArrayList的元素?实际上真的只有一个对象吗?换句话说:

listSomeObject.get(0).getSomeProp()

这会返回 5 吗?

【问题讨论】:

  • 运行它,然后测试它?
  • 我不想运行它;我想在谷歌搜索时立即看到答案。所以这些人做出了牺牲,答应了,并在这个小问题上放置了一个索引页面。你的邻居有一天可能会需要它
  • 我希望我的邻居花一些时间阅读一些好的 Java 书籍或在线教程来理解这个概念,而不是在谷歌上寻找这些东西。

标签: java object arraylist


【解决方案1】:

简短回答:是的。

长答案:是的!

很长的答案:你为什么不试一试,发现它确实返回了 5?

【讨论】:

  • 我猜是的;我可以尝试一下,但是当我用谷歌搜索时,我无法立即看到任何结果;所以我希望这也能记录在案。
【解决方案2】:

只有一个名为so的对象,被map和list引用(引用)。因此,通过任何引用对 so 所做的任何更改都随处可见。

所以答案是肯定的。

【讨论】:

    【解决方案3】:

    是的。这是因为 so 是对值的引用,而不是值本身。无论您将引用放在列表、地图还是其他东西中,您仍将修改相同的值。

    【讨论】:

    • 干杯,刚刚修好了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-26
    • 2016-07-01
    • 2019-04-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多