[英]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.