Java IterableとItertorの詳細
2960 ワード
IterableとIteratorは時間をかけて研究して整理することにしました
英語の意味からIterableを理解する:だから不思議で、このインタフェースを実現した集合オブジェクトは反復をサポートし、反復可能である.ableの終わりの表現は...のように、することができます....Iterator:英語でorエンディングは...を表す人or...者です.クリエイターはクリエイターの意味です.ここでも同じです.iteratorは反復者です.私たちは一般的に反復器と呼ばれています.それは反復メカニズムを提供するオブジェクトです.具体的にどのように反復するかは、Iteratorインタフェース仕様です.
Iterableコレクションオブジェクトは、反復をサポートしていることを示し、foreach文を使用できる特権を持つには、Iterableインタフェースを実装し、私が反復可能であることを示しなければなりません.しかし、Iterableインタフェースを実装するには、foreach文に反復器を提供する必要があります.この反復器はインタフェースで定義されたiteratorメソッドで提供されます.つまりiteratorメソッドはIteratorオブジェクトを返す必要があります.
IteratorにはhasNext,next,removeの3つのメソッドが含まれています.removeは需要に応じて実現され、一般的にはあまり使われず、Eclipseインタフェースメソッドが自動的に補完されると、remove再生メソッドは無視されます.1、反復する前にhasNext()を呼び出して、終点まで反復するかどうかを検出します(今回は反復できますか?)2、nextメソッドは現在の要素だけでなく、カーソルcursor 3、remove()メソッドを後方に移動して、前回反復した要素4を削除し、反復した要素は元のセットの要素のコピー(重要)5、foreachと協力して使用する
foreachを使用するには、集合クラスはIEnumeratorインタフェースを実装する必要があるクラスfor(A a:aList)である
英語の意味からIterableを理解する:だから不思議で、このインタフェースを実現した集合オブジェクトは反復をサポートし、反復可能である.ableの終わりの表現は...のように、することができます....Iterator:英語でorエンディングは...を表す人or...者です.クリエイターはクリエイターの意味です.ここでも同じです.iteratorは反復者です.私たちは一般的に反復器と呼ばれています.それは反復メカニズムを提供するオブジェクトです.具体的にどのように反復するかは、Iteratorインタフェース仕様です.
Iterableコレクションオブジェクトは、反復をサポートしていることを示し、foreach文を使用できる特権を持つには、Iterableインタフェースを実装し、私が反復可能であることを示しなければなりません.しかし、Iterableインタフェースを実装するには、foreach文に反復器を提供する必要があります.この反復器はインタフェースで定義されたiteratorメソッドで提供されます.つまりiteratorメソッドはIteratorオブジェクトを返す必要があります.
//Iterable JDK
// , , Iterator
public interface Iterable
{
Iterator iterator();
}
IteratorにはhasNext,next,removeの3つのメソッドが含まれています.removeは需要に応じて実現され、一般的にはあまり使われず、Eclipseインタフェースメソッドが自動的に補完されると、remove再生メソッドは無視されます.1、反復する前にhasNext()を呼び出して、終点まで反復するかどうかを検出します(今回は反復できますか?)2、nextメソッドは現在の要素だけでなく、カーソルcursor 3、remove()メソッドを後方に移動して、前回反復した要素4を削除し、反復した要素は元のセットの要素のコピー(重要)5、foreachと協力して使用する
//Iterator JDK , Iterator
public interface Iterator {
boolean hasNext(); // next ,
E next(); // , ,
/* 。
next , remove 。
, remove() next ( );
next remove 。
MySQL ResultSet
*/
void remove()
{
throw new UnsupportedOperationException("remove");
}
}
/**
*
*/
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* @author lenovo
*
*/
public class Algotithms implements Iterable{
private Algorithm[] als;
private List alInfo;
/**
*
*/
public Algotithms(Algorithm[] als) {
alInfo = new ArrayList();
// TODO Auto-generated constructor stub
this.als = als;
}
/* (non-Javadoc)
* @see java.lang.Iterable#iterator()
*/
public Iterator iterator() {
// TODO Auto-generated method stub
return new AlgorithmIterator();
}
private class AlgorithmIterator implements Iterator{
private int index = 0;
private int cursor = -1;
/* (non-Javadoc)
* @see java.util.Iterator#hasNext()
*/
public boolean hasNext() {
// TODO Auto-generated method stub
return cursor != als.length;
}
/* (non-Javadoc)
* @see java.util.Iterator#next()
*/
public Algorithm next() {
// TODO Auto-generated method stub
Algorithm temp = als[index++];
cursor += 1;
return temp;
}
/* (non-Javadoc)
* @see java.util.Iterator#remove()
*/
public void remove() {
// TODO Auto-generated method stub
}
}
public List ergAlInfo(){
for (Algorithm al : als){
}
return alInfo;
}
}
foreachを使用するには、集合クラスはIEnumeratorインタフェースを実装する必要があるクラスfor(A a:aList)である