2010-02-24 64 views
0

是否有一個標準的Java(1.5+)實現(即沒有第三方)的集合允許我將多個集合合併爲一個?Java collection reference-copy

這裏是一個草圖,它是如何工作:

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. 

謝謝!

+1

不是沒有自己實現它。 (一個簡單的「否」不夠長。:) :) – PSpeed 2010-02-24 02:29:45

回答

2

沒有一個標準集合可以將集合與您所追蹤的語義進行嵌套。

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) 
0

如果你所提到的「SomeCollection」類是一個java.util.Collection類型,那麼你就可以在任何其他集合添加到它。 參見例如。 您可以按如下方式組合兩種不同類型的集合。

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

它不會反映ArrayList的變化回到Vector中,這是我需要的功能。 我改變了代碼的設計;我不再需要這種類型的集合。 如果很快就會有這樣一個集合的Java實現將是很好的,我可以想象有更多的人比我需要它。 – Pindatjuh 2010-03-04 16:30:43