簡體   English   中英

使用像c ++迭代器這樣的Java迭代器

[英]using java iterators like c++ iterators

    Vector <String> songList;
    Iterator<String> begin= songList.iterator();
    Iterator<String> end= songList.iterator();

假設我有一個矢量歌曲清單,就像iTunes中的清單一樣。 如何在不迭代整個列表的情況下將begin迭代器設置為開始,將end迭代器設置為結束? 另外,在滿足特定條件之前,我將如何反向移動最終迭代器? 我可以在網上找到的最好的功能是hasnext / next函數,但是這些僅是轉發的? 我是java的新手,並嘗試搜索答案,但我不知道要搜索哪些關鍵術語。 本質上,我想通過保持指向以某種模式開頭的歌曲的開頭和結尾的指針,將歌曲列表從一千個縮小到幾個。 因此,如果我要搜索“ the”,我想為以“ the”開頭的所有歌曲返回一個下限迭代器和一個上限迭代器。 然后,我想在用戶從鍵入“ the”到“ ther”再到“ there”時不斷調整這些迭代器。等等。我知道java不會像c ++那樣使用指針。 我只是想盡我所能盡快做到。 請幫忙!

從要執行的操作的描述中,您實際上根本不需要使用列表:您想要的是TreeSet 您可以使用subSet(from,to)方法搜索以模式開頭的歌曲。

無論哪種方式,給定一個列表,您都可以使用以下方法獲得指向列表最后一項的迭代器:

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

請注意,它指向最后一項, 而不是最后一項之后的一項。 您可以向后遍歷使用previous()hasPrevious()中定義的方法ListIterator接口

另外,您應該使用ArrayList類而不是Vector 您可以在Vector的文檔中閱讀,

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

迭代器對象用於向前迭代,並且只能迭代一次。 Listiterator obj用於迭代向前和向后的方向,並且我們可以多次迭代對象。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM