gpt4 book ai didi

java - 像使用 C++ 迭代器一样使用 java 迭代器

转载 作者:行者123 更新时间:2023-12-01 23:32:59 26 4
gpt4 key购买 nike

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

假设我有一个歌曲 vector 列表,就像 itunes 中的列表一样。如何将开始迭代器设置为开头,将结束迭代器设置为结尾而不迭代整个列表?另外,在满足特定条件之前,我将如何沿相反方向移动结束迭代器?我在网上能找到的最好的方法是 hasnext/next 函数,但这些函数只是向前的?我是java新手,尝试寻找答案,但我不知道要搜索哪些关键术语。本质上,我想做的就是通过保留指向以模式开头的歌曲的开头和结尾的指针,将歌曲列表从一千首缩小到几首。因此,如果我正在搜索“the”,我想返回所有以“the”开头的歌曲的下限迭代器和上限迭代器。然后我想随着用户从输入“the”到“ther”再到“there”...等不断调整这些迭代器。我知道java不像c++那样使用指针。我只是想以最快的方式做到我所说的。请帮忙!

最佳答案

从您想要执行的操作的描述来看,您根本不想使用列表:您想要的是 TreeSet 。您可以使用 subSet(from,to) 方法来搜索以模式开头的歌曲。

无论哪种方式,给定一个列表,您都可以获得一个指向列表最后一项的迭代器:

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

请注意,它指向最后一项,而不是指向最后一项之后的一项。您可以使用 ListIterator interface 中定义的 previous()hasPrevious() 方法向后迭代。 .

此外,您应该使用 ArrayList 类而不是 Vector。正如您可以在 Vector 的文档中阅读的那样,

Unlike the new collection implementations, Vector is synchronized. If a thread-safe implementation is not needed, it is recommended to use ArrayList in place of Vector.

关于java - 像使用 C++ 迭代器一样使用 java 迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19070248/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com