2013-09-28 104 views
0
Vector <String> songList; 
    Iterator<String> begin= songList.iterator(); 
    Iterator<String> end= songList.iterator(); 

說我有一個歌曲的矢量列表就像在iTunes中的列表。我如何設置開始迭代器的開始和結束迭代器的結束,而不是遍歷整個列表?此外,我將如何將反向移動結束迭代器,直到符合特定條件?我能在網上找到的最好的是hasnext/next函數,但那些只是向前?我是新來的Java,並試圖尋找答案,但我不知道要搜索什麼關鍵詞。實質上,我想要做的是通過保持一個指向以模式開始的歌曲的開始和結尾的方式來將歌曲列表從一千個縮小到幾個。因此,如果我正在搜索「the」,我想返回以「the」開頭的所有歌曲的下界迭代器和上界迭代器。然後我想繼續調整這些迭代器,因爲用戶從輸入「the」到「ther」到「there」等等。我知道java不使用類似C++的指針。我只是想盡可能以最快的方式做我說的話。請幫忙!使用Java迭代器,如C++迭代器

回答

3

從描述你想要做什麼,你根本不想使用一個列表:你想要的是一個TreeSet。您可以使用subSet(from,to)方法搜索以模式開頭的歌曲。

無論哪種方式,給定一個列表,你可以獲取它指向了列表的最後一個項目的迭代器:

ListIterator<String> end= songList.iterator(songList.size()-1); 

注意,它指向的最後一個項目,一個項目過去最後。您可以使用ListIterator interface中定義的previous()hasPrevious()方法向後迭代。

此外,您應該使用ArrayList類而不是Vector。正如你可以在Vector的文檔中看到的,

與新的集合實現不同,Vector是同步的。如果不需要線程安全的實現,建議使用ArrayList來代替Vector。

+0

謝謝!我可能會使用ListIterator,因爲我需要爲我的jtable保留向量 –

0

迭代器對象用於迭代前進方向和僅一次。雖然Listiterator obj用於迭代前向和後向,以及我們可以多次迭代對象。