我可以获得List<>的引用吗?对象中有一个元素?

时间:2011-04-11 11:14:17

标签: java collections

例如,我引用了mItem集合的List<mItem> mList对象。是否可以使用mList获取对mItem的引用?

4 个答案:

答案 0 :(得分:7)

简短的回答是否定的。列表中的项目不知道它们在列表中。 (当然,除非你在mItem对象中添加对列表的引用。)

答案 1 :(得分:2)

简答:不。

将项添加到列表会将对该对象的引用添加到列表中。它不会影响对象本身。

您可以检查项目是否在特定列表中,mList.contains(mItem)如果项目位于mList,则返回true。或者,如果您确实需要,您可以像其他人一样建议实现List的版本,该版本通知每个项目列表具有对该项目的引用。但开销会相当混乱。

元问题:为什么需要此功能?

答案 2 :(得分:2)

正如jzd所说......你可以在你的mItem课程中添加一个字段(例如referenceHolder

mItem(Object ref){
    referenceHolder = ref;
}
带有List的

类:

mList.add(new mItem(this));

这样的东西应该可以工作:)但它有点奇怪;),因为通常“列表中的项目不知道它们在列表中。”

编辑:如前所述 - “一个对象应该是多个集合的成员” - 所以你需要将我的referenceHolder的类型更改为某个列表或数组,以使其能够实现。

EDIT2:这只是对持有该列表的对象的引用(如果一个对象将有多个列表,你将无法知道他们的女巫是持有那个指定的mItem对象),引用List本身你将会需要(如评论中所述;))自定义列表实现在this方法中使用add()添加对存储对象的引用。

答案 3 :(得分:0)

如果您拥有所有列表的容器,则可以在每个列表上调用contains以查找该项目所在的列表。

注意:对于列表,您可以多次使用相同的元素,并且可以跨多个列表。

BTW:如果你不想在列表中重复并且不关心元素的顺序,那么Set可能是你的最佳选择。