Java集合引用副本

时间:2010-02-24 02:27:40

标签: java collections

是否有一个标准的Java(1.5+)实现(即没有第三方)的集合允许我将多个集合粘合到一个集合中?

这是一个草图,它是如何工作的:

final SomeCollection x = new SomeCollection();
final ArrayList a = new ArrayList();

a.add("first");
assert(a.size() == 1);

x.embed(a); // don't know for sure, if this exists.
assert(x.size() == 1);

a.add("second");
assert(a.size() == 2);
assert(x.size() == 2); // the other array is used as a backend-collection.

final ArrayList b = new ArrayList();
b.add("third");
assert(b.size() == 1);

x.embed(b);
assert(x.size() == 3); // x is a combination of the other two lists.

谢谢!

3 个答案:

答案 0 :(得分:2)

没有一个标准集合用你所遵循的语义来嵌套集合。

答案 1 :(得分:1)

一,我不确定X是否是ArrayList对象的集合,或者X是否是在添加到A的元素后更改的集合。您应该在代码中添加一些类型安全(和自我文档),即

    final List<String> x = new ArrayList<String>();    
    final List<String> a = new ArrayList<String>();

    a.add("first");    
    assert(a.size() == 1);  

两个,集合(带有s)充满了“支持”另一个集合,例如

    Collections.unmodifiableCollection(Collection<? extends T> c)

答案 2 :(得分:0)

如果你提到的'SomeCollection'类是java.util.Collection类型,那么你可以添加任何其他集合。 参见例如。 您可以按如下方式组合两种不同类型的集合。

Vector  v = new java.util.Vector();
ArrayList alist = new java.util.ArrayList();
v.addAll(alist);