更新和引用列表中的项目

时间:2017-03-19 05:05:48

标签: java list

我只是想知道Java是否提供了允许以下内容的任何内容:

<Some List> list = new <Some List>;
Foo f = null;
list.add(f);
f = new Foo();

//Where this would be true
list.contains(f)

//As well as this (which is kind of implied by the contains call)
f == list.get(0)

据我所知,这不适用于任何Java列表。本质上,我问的是否有一个集合类型将根据其外部引用更新其内部元素。在上面的示例中,我希望如此设置&#39; f&#39;到新的Foo实例也会反映在列表条目中。这也意味着以下情况属实:

<Some List> list = new <Some List>;
Foo f = null;
list.add(f);
f = new Foo();
f.name = "banana";

//Where this would be true and not cause an NPE, as it does with List
f.name == list.get(0).name //Both would equal "banana"

这样的事情是否存在?

编辑:

为了澄清,添加到列表中的原始对象需要为空。然后更新该对象,该更新应反映在列表中。在上面的示例中,Foo变量首先是 null ,并且在它仍然为null时添加到列表中。添加之后,我将其设置为Foo的新实例。我想知道是否有一个列表类型,当我实例化Foo时,也会更新列表。

2 个答案:

答案 0 :(得分:0)

回答关于包含问题的问题,请看这个例子

        List<String> test = new ArrayList<String>();
        String one = new String("one");
        test.add(one);
        one = new String("one");
        System.out.println(test.contains(one));

它打印为真,为什么?因为String类重写equals和hash方法(From Object类,所有Class都从Object扩展)

如果你没有得到平等,那是因为你需要探测当你传递方法时,方法等于是真的。

答案 1 :(得分:0)

实现所需内容的最简单方法是将引用包装在另一个类中:

templateUrl: 'my.component.html'
styleUrls:  ['my.component.css']