2011-08-21 68 views

回答

1

Google Guava項目有一個名爲Iterators的類,它提供了用於獲取迭代器並將變換應用於它們的實用程序。他們提供的函數之一叫做Iterators.concat,它接受多個迭代器併產生一個迭代器來迭代這些單個迭代器的連接。這可能不是您正在尋找的內容,但它可以爲您提供跨多個元素迭代的功能,而無需重複所有元素。

您可能需要考慮的一個問題是,如果您嘗試對該集合進行變異,則在您使用集合時會發生什麼情況。例如,如果你添加一個元素,它會去哪裏?如果你需要的只是迭代,你不需要考慮這個問題,那麼Iterators.concat方法可能就是你要找的。

0

查看Google Guava庫,其中包含一個Iterators類,其中包含許多有用的靜態方法。在這種情況下,您可以使用concat將每個小集合上的迭代器合併爲一個遍歷所有集合的迭代器。

// First collection. 
List<String> l = new LinkedList<String>(); 
l.add("Hello"); 
l.add("Hi"); 

// Second collection. 
Set<String> s = new HashSet<String>(); 
s.add("Goodbye"); 

// Combine iterators over both collections. 
Iterator<String> it = Iterators.concat(l.iterator, s.iterator());