イテレーターとリステーターの範囲と関係:
(1)Iteratorを使用して、反復インターフェイスリストArrayList、LinkedList、Mapなどを実装できます。
(2)ListIteratorは、名前が示すように、リストを繰り返してArrayListとLinkedListを実装するために使用されます。
(3)ソースコードまたはAPIドキュメントからわかるように、IteratorはListiteratorの親クラスです。
public interface listiterator <e> extends iterator <e> {// Omit ...}Listiteratorに新しい方法が追加されました。
Iteratorの分析暗黙のカーソル位置インスタンス:
上記の図に示すように、コレクションリストには、イテレーターが反復する4つの要素a、b、c、dがあります。 xxx.iterator()またはxxx.listiterator()メソッドが呼び出された場合、
イテレーターはiterator_oneの位置を指し、xxx.next()メソッドが呼び出されると、iteratorの位置はiterator_two位置を指します。
イテレーターが指す位置は、要素の真向かいではなく、要素間であります。
IteratorおよびListiteratorの方法:
------ Iteratorのメソッド:
公式APIメソッドの概要:
メソッド分析:
hasnext():コレクションの要素イテレーターによって指された次の位置に要素があるかどうかを決定します。 trueを返し、それ以外の場合はfalseを返します
next():Iteratorが指す位置の次の要素の値を返します。
remove():iteratorを介してイテレーターによって削除された値を削除します。
------ ListIteratorのメソッド:
公式APIメソッドの概要:
メソッド分析:
追加(EE):コレクションに指定された要素を挿入します。挿入位置は、次の()または前()メソッドの最後の操作に関連しています。
最後の操作が次()の場合、要素が次に削除された後に要素が挿入され、以前()の場合、要素が削除される前に要素が挿入されます。
hasnext():セットが正の順序で通過した場合、暗黙のカーソルによって指される次の要素が存在するかどうかを決定します。それが存在する場合、それはtrueを返し、それ以外の場合はfalseを返します。
hasprevious():セットが逆トラバースされている場合、暗黙のカーソルの以前の要素が存在するかどうかを決定します。それが存在する場合、それはtrueを返し、それ以外の場合はfalseを返します。
Next():暗黙のカーソルによって指している位置に次の要素値を返します。
nextIndex():暗黙のカーソルによって指された位置の次の要素のインデックス値を返します。
前():暗黙のカーソルで指し示された位置で以前の要素値を返します。
forterindex():暗黙のカーソルによって指された前の位置要素のインデックス値を返します。
削除():コレクションから要素を削除することは、すべての要素を削除するのではなく、最後の操作の次()または以前()によって返される要素を削除することです。
次()または前()が値を返さない場合、エラーが報告されます。
set(ee):next()または以前()で返された要素をリストからeで置き換えます。たとえば、next()がAとして削除された場合、Aをセットごとに置き換えることができます。
例1:
パッケージcom.lanhuigu.java; Import java.util.arraylist; Import java.util.list; import java.util.listiterator; public class listiteratorapitest {public static void main(string [] args){list <string> list = new ArrayList <String>(); list.add( "a"); list.add( "b"); list.add( "c"); list.add( "d"); //この時点で、イテレーターはiterator_one listitaterator <string> listiterator = list.listiterator(); listiterator.next(); // element listiterator.remove(); //次に取得した要素を削除します。この時点で、Aはコレクションから削除されました。要素を追加// listiterator.previous(); listiterator.add( "e"); //ポジションiterator_twoを指す前に、それは以前の位置であり、次に取得した要素を印刷します。 system.out.println( "firstlement:" + firstlement); //ポインティング位置をiterator_oneの位置に再現しますが、aは削除されていません。 while(listiterator.hasnext()) {System.out.println(listIterator.next());}System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ list.listiterator();例2:
パッケージcom.lanhuigu.java; import java.util.arraylist; Import java.util.iterator; import java.util.list; import java.util.listiterator; public static void main(string [] args){list <<string> list = new new new new new arrayList <string>(); list.add( "a"); list.add( "b"); list.add( "c"); list.add( "d"); //セットをトラバースする最初の方法は、ループステートメントを直接通過することです(for、while、while)// {system.out.println(e);} system.out.println( "-----------------"); //セットをトラバースする2番目の方法(iterator)iterator <string> iterator = list.iterator(); while(iterator.hasnext()){system.out.println(iterator.next());} system.out.println( "--------------------------"); //セットをトラバースする3番目の方法(listitaterator <string> listiterator = list.listiterator(); while(listiterator.hasnext()){system.out.println(listiterator.next());} system.out.println( "----------------");}}}要約します
上記は、JavaのIteratorおよびListiteratorの例のすべての詳細な説明です。私はそれが誰にでも役立つことを願っています。興味のある友人は、このサイトの他の関連トピックを引き続き参照できます。欠点がある場合は、それを指摘するためにメッセージを残してください。このサイトへのご支援をありがとうございました!