この記事では、Javaのイテレーターモードに基づいたアクセス担当者リスト操作について説明します。次のように、参照のために共有してください。
パターン定義
Iteratorモードは、内部表現を公開することなく、コレクションオブジェクト内の個々の要素に順番にアクセスするスキーマを提供します。
2番目のモードの例
1パターン分析
このパターンを説明するために、訪問者リストのケースを借ります。
2イテレータモード静的クラス図
3つのコードの例
3.1人事情報インターフェイス - Iperson
パッケージcom.demo.person;/** *人事情報 * * @author * */public interface iperson {/** *人事情報を取得 * * @return */public string getPersonInfo();}3.2人事情報の実施 - 人
パッケージcom.demo.person;/** *人固有の実装クラス * * @author * */public classの人はiperson {//名前プライベート文字列名; //年齢int int age; //性別(1:男性0:女性)プライベートINTセックス。 / ** * constructorメソッド属性コンテンツの設定 * * @param name * @param age * @param sex */ public person(string name、int age、int sex){this.name = name; this.age = age; this.sex = sex; } / ** *人事情報の取得 * * @return * / public string getPersonInfo(){return "name:" + this.name + " -age:" + this.age + " - gender:" +(this.sex == 1? "male":(this.sex == 0? "fame": "")); }}3.3人事収集インターフェイス-IpersonList
パッケージcom.demo.person; import com.demo.iterator.iterator;/** *人事インターフェイス * * @author * * */public interface ipersonlist {/** *人事情報の内部ストレージ * * @return */public iperson [] getPersonList(); / ** * iterator * * @return */ public Iterator iterator();}3.4パーソンリスト
パッケージcom.demo.person; import java.util.random; import com.demo.iterator.arrpersitorator; import com.demo.iterator.iterator;/** * PersonList Information * */Public Class PersonList Exprence IpersonList {// Store User information list Iperson [] = New Iperson [10]; // construct method人事情報public personlist(){random = new Random(); //(int i = 0; i <10; i ++){iperson person = new person( "person"+i、random.nextint(30)、random .nextint(2))の人事情報を作成します。 list [i] = person; // this.list.add(person); }} / ** *内部ストレージの人事情報コンテンツを取得 * * @return * / public iperson [] getPersonList(){return list; } / ** * iterator * * @return * / public Iterator iterator(){return new arrpersoniterator(this.list); }}3.5 Iteratorインターフェイス-Iterator
パッケージcom.demo.iterator;/** * iterator interface * * @author * */public interface iterator {//次のノードにpublic boolean hasnext()が含まれているかどうかを判断します。 //次のノードオブジェクトを取得しますpublic Object next; //オブジェクトを削除しますpublic object remove();}3.6 Iteratorの実装 - arrpersoniterator
パッケージcom.demo.iterator;インポートcom.demo.person.iperson;/** * array iterator実装 * * @author * * */public class arrpersiterator empleside iterator {//プライベート属性ストア人事リストオブジェクト情報//ストレージの位置情報の初期値は-1プライベートINTインデックス= -1です。 / ** *コンストラクターメソッドは * * @param personlist */ public arrpersoniterator(iperson [] personlist){this.personList = personList; } //次のノードにパブリックブールhasnext(){return(this.personlist == null?false:(index <this.personlist.length -1)); } //次のノードオブジェクトを取得しますpublic Object next(){if(this.personList!= null &&(index <this.personlist.length -1)){//人事リストで人事情報を取得しますreturn this.personList [++ index]; } nullを返します。 } //オブジェクトを削除しますpublic object remove(){if(this.personList!= null){iperson person = this.personList [index]; this.personList [index] = null;返品者; } nullを返します。 }}3.7イテレーターにコレクションオブジェクトを通過させます-Client
パッケージcom.demo; Import com.demo.iterator.iterator; Import com.demo.person.iperson; Import com.demo.person.ipersonList; Import com.demo.person.personList; import com.demo.person.personlist; public class client { / ** * @param args * / public void agris [ / ipersonList personlist = new PersonList(); System.out.println("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- personList.iterator(); // Loop iterator各要素を通過し、人事情報を出力します(iterator.hasnext()){//人事オブジェクトインスタンス=(iperson)iterator.next(); 終わり..."); }}4ランニング結果
----イテレーターを使用して人事情報を出力します...
名前:年齢:28-性別:女性名:人員1-年齢:25-性別:女性名:人材2-人材:23歳 - 女性名:人事3-年齢:18-年齢:18-人事:人事:27歳 - 女性名:人事:人事:28歳 - ジェンダー:男性名:25歳 - ジェンダー:23-ジェンダー:女性名:23-ジェンダー:23-ジェンダー:名前:人事9-年齢:12-性別:女性
----イテレーターを使用して、人事情報の終わりを出力します...
このパターンのデザインの3つの原則
1「開閉」原則
2単一責任の原則
4つの使用機会
1内部表現を公開することなく、コレクションオブジェクトの内容を取得します。
2は、収集オブジェクトの複数のトラバーサル方法をサポートします。
3は、異なるコレクションオブジェクト構造を通過するための統一されたインターフェイスを提供します。
5つのイテレータモード静的クラス図
Java関連のコンテンツを増やすために、このサイトに興味のある読者は、「Javaオブジェクト指向プログラミングに関する紹介と高度なチュートリアル」、「Javaデータ構造とアルゴリズムに関するチュートリアル」、Java Operation domノードスキルの要約」、「Javaファイルの概要、およびJava操作スキルの概要」の概要を見ることができます。
この記事がみんなのJavaプログラミングに役立つことを願っています。