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);

最後の項目の 1 つ前の項目ではなく、最後の項目を指すことに注意してください。interfaceprevious()で定義されたおよびhasPrevious()メソッドを使用して、逆方向に繰り返すことができます。ListIterator

また、のArrayList代わりにクラスを使用する必要がありVectorます。Vector のドキュメントで読むことができるように、

新しいコレクションの実装とは異なり、Vector は同期されます。スレッドセーフな実装が必要ない場合は、Vector の代わりに ArrayList を使用することをお勧めします。

于 2013-09-28T18:30:57.503 に答える