JAva反復器の分析について...より一般的な容器遍歴方法を設計する
2840 ワード
皆さんは私の前の反復器の設計モードの文章を見たことがありますかを知らないで、ここで私はみんなが反復器の設計モードの原理を理解すると仮定して...前の1篇を見に行くことが分かりません
実はjavaの中で反復器の設計に対してただこのようなモードにほかならない...私達は容器を遍歴する時
例えばArrayListはgetとadd...addをCollectonから実装する方法であり...getはArrayListが単独で追加したものであり、汎用インタフェースではない.
HashSetにはgetは存在しません...
対象思想の目的の一つがコード再利用である以上,これらの容器類を統一的に処理することができるだろうか.
Iterator反復インタフェースには、Iteratorインタフェースを実装したクラスごとに、反復機能を提供する3つの方法があります.
Collectionインタフェースを実装するクラスごとにiteratorメソッドがIterator反復器オブジェクトを返すことができます.もちろん、ここではIteratorの実装クラスのオブジェクトです.
ただ私たちは上へ転換しただけで、彼はIteratorと見なしています.の戻ってきたのはIteratorだ 具体的な実現原理は私の前の反復器設計モードの実現を見てください.次に、反復器を用いて容器の統一操作を実現する.
実はjavaの中で反復器の設計に対してただこのようなモードにほかならない...私達は容器を遍歴する時
例えばArrayListはgetとadd...addをCollectonから実装する方法であり...getはArrayListが単独で追加したものであり、汎用インタフェースではない.
HashSetにはgetは存在しません...
対象思想の目的の一つがコード再利用である以上,これらの容器類を統一的に処理することができるだろうか.
Iterator反復インタフェースには、Iteratorインタフェースを実装したクラスごとに、反復機能を提供する3つの方法があります.
boolean
hasNext()
反復可能な要素がまだある場合はtrueを返します. E
next()
反復の次の要素を返します. void
remove()
反復器が指すcollectionから反復器が返す最後の要素を除去します(オプション).Collectionインタフェースを実装するクラスごとにiteratorメソッドがIterator反復器オブジェクトを返すことができます.もちろん、ここではIteratorの実装クラスのオブジェクトです.
ただ私たちは上へ転換しただけで、彼はIteratorと見なしています.の戻ってきたのはIteratorだ 具体的な実現原理は私の前の反復器設計モードの実現を見てください.次に、反復器を用いて容器の統一操作を実現する.
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
public class MyIterator {
public static void showContainer(Iterator<String> it) {
while(it.hasNext()){
System.out.println(it.next());
it.remove() ;
}
}
public static void main(String []agrs)
{
Collection<String> c=new ArrayList<String>();
Collection<String> s=new HashSet<String>();
c.addAll(new ArrayList<String>(){
private static final long serialVersionUID = 1L;
{
add("one") ;
add("two") ;
add("three") ;
add("four") ;
}
}) ;
s.addAll(new HashSet<String>(){
private static final long serialVersionUID = 1L;
{
add("four") ;
add("one") ;
add("two") ;
add("three") ;
add("four") ;
}
});
System.out.println("------------------");
MyIterator.showContainer(c.iterator() ) ;
System.out.println(c.size());
System.out.println("-----------------");
MyIterator.showContainer(s.iterator()) ;
System.out.println(s.size());
}
}