1

From :コレクション フレームワーク

「AbstractCollection クラスは、適切なサブクラスで実装される iterator() および size() メソッドを除く、すべてのメソッドの実装を提供します」

iterator() のデフォルトの動作がない理由を誰かが明確にすることができますか? この質問から、サイズ () がデフォルトではない理由がわかります

4

3 に答える 3

6

それは何をしますか?

iterator()メソッドは、派生クラスが実際にデータを提供する方法です。
を実装するすべてのメソッドは、およびAbstractCollectionの実際の実装によって提供されるデータを使用して、適切なロジックを実行するだけです。size()iterator()

于 2012-08-12T02:37:24.703 に答える
2

はデータのAbstractCollection保存方法を認識しないため、iterator()実装には次の 2 つの選択肢があります。

  • 抽象メソッドにするか、
  • またはUnsupportedOperationExceptionなど、他の多くのメソッドと同じようにスローします。addremove

最初の解決策のみが理にかなっています。コレクションは少なくとも読み取りを許可する必要がありますが、書き込みはオプションである場合があります。

于 2012-08-12T02:41:56.807 に答える
0

3 つの異なるコレクションを考えてみましょう: 配列に基づくリスト、リンクされたリスト、そしてツリーに基づく並べ替えられたリストです。配列ベースのコレクションの反復子は、インデックス付けされた場所に基づいて各要素にアクセスするユーザーを知る必要があります。リンクされたリストの反復子は、要素間のリンクをトラバースする方法を知っている必要があります。また、ツリーベースのコレクションの反復子は、ツリーをトラバースする方法 (幅優先または深さ優先など) を知る必要があります。これらの動作はすべて非常に異なり、実装固有であることがわかります。

于 2012-08-12T16:59:05.500 に答える