7

私のData Structures and Problem Solving using Java bookに次の問題があります。

コレクション API を使用して任意のコレクション内の項目を逆順に出力するルーチンを作成します。ListIterator は使用しないでください。

誰かに宿題をやってもらいたいので、ここに書いているのではありません。コードを書くように求められていることを正確に理解できないようです!

「ルーチン」を書くように頼まれたとき、それは単一のメソッドを探していますか? さまざまな種類のコレクション (リンクされたリスト、キュー、スタック) のすべてに対して単一のメソッドを機能させる方法がよくわかりません。

誰かが私を正しい方向に導くことができれば、私はそれを大いに感謝します.

4

5 に答える 5

17

コレクションの半分には gstable の順序付けがなく、固定された順序付け (つまり、TreeSet または PriorityQueue) がないため、あまり意味のない質問に関係なく、次のステートメントを使用して、コレクションの内容を逆の自然な順序で出力できます。

List temp = new ArrayList(src);
Collections.reverse(temp);
System.out.println(temp);

リストは任意に並べ替えることができる唯一の構造であるため、本質的に配列リストを作成します。srcコレクションをコンストラクターに渡します。コンストラクターは、コレクションの自然な順序でsrcの内容を使用してリストを初期化します。次に、リストをCollections.reverse()メソッドに渡します。このメソッドはリストを逆にし、最後にそれを印刷します。

于 2008-10-13T03:32:06.540 に答える
2

まず、メソッドを書くように求めていると思います。お気に入り:

void printReverseList(Collection col) {}

次に、これを行うには多くの方法があります。たとえば、コレクション API のみを使用して、toArray メソッドを使用し、for ループを使用して、最後からすべてのアイテムを出力します。わかる?

Collection インターフェースを使用するさまざまなクラスに関しては、インターフェースを実装する必要があるため、それらすべてに対して自動的に機能します (適切な方法で実装する場合)。

于 2008-10-13T03:29:40.977 に答える
0

入力の型に基づいて他のルーチンに委譲するルーチンを持つこともできますが、1 つの引数に含めることができる十分に汎用的なコレクション型があるかどうかはわかりません。メソッドのオーバーロードを使用できると思います(同じ名前の複数のメソッドがありますが、異なる引数を受け入れます)。

これは技術的には 1 つのルーチンとしてカウントできます (すべて同じ名前です)。

于 2008-10-13T03:24:18.023 に答える
0

コレクションの基本クラスはありませんか?

おそらく、出発点としてここを見る価値があります: Collections

于 2008-10-13T03:30:19.290 に答える
0

私はJavaについてあまり知りませんが、「コレクションAPI」を考えると、これらのオブジェクトはすべて、何らかの方法で反復できるインターフェースを実装していると思います。それらはすべて itemAtIndex( int index ) と length() または同様のメソッドを使用できると思います。

これを読みたいと思うかもしれません。

于 2008-10-13T03:30:48.057 に答える