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

假设我有一个矢量歌曲列表,就像 iTunes 中的列表一样。如何在不遍历整个列表的情况下将开始迭代器设置为开头并将结束迭代器设置为结尾?此外,我将如何将结束迭代器反向移动,直到满足特定条件?我能在网上找到的最好的是 hasext/next 功能,但那些只是转发?我是 Java 新手,并尝试搜索答案,但我不知道要搜索哪些关键术语。本质上,我要做的是通过保持指向以模式开头的歌曲的开头和结尾的指针,将歌曲列表从一千首缩小到几首。因此,如果我正在搜索“the”,我想为所有以“the”开头的歌曲返回一个下限迭代器和上限迭代器。然后我想继续调整这些迭代器,因为用户从输入“the”到“ther”再到“there”……等等。我知道 java 不使用 c++ 使用的指针。我只是想以最快的方式做我所说的。请帮忙!

4

2 回答 2

3

从你想要做什么的描述来看,你根本不想使用列表:你想要的是一个TreeSet. 您可以使用该subSet(from,to)方法搜索以模式开头的歌曲。

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

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

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

此外,您应该使用ArrayList类而不是Vector. 正如您在 Vector 的文档中所读到的,

与新的集合实现不同,Vector 是同步的。如果不需要线程安全实现,建议使用 ArrayList 代替 Vector。

于 2013-09-28T18:30:57.503 回答
0

迭代器对象用于前向迭代,并且仅用于一次。而 Listiterator obj 用于向前和向后迭代,我们可以多次迭代对象。

于 2013-09-28T18:34:19.557 回答