Iterator/Arrays


Iterator vs Iterator()


コレクションに格納されている各要素にアクセスする機能を持つ奇形インタフェースを定義し、collecionインタフェースはiterator(反復器を実装するクラスインスタンス)を返すiterator()を定義します.
public interface Iterator{
boolean hasNext();
Object next();
void remove();
}
public interface Collection{
public Iterator iterator()
}
  • Irantor()は、Collectionインタフェースで定義されたインタフェースであるため、Collectionインタフェースの子Listおよびsetにも含まれる.
  • 反復器は使い捨てです.
  • 反復メソッド

  • booleanhasNext()=読み込む要素があるかどうかをチェック
  • オブジェクトnext()=次の要素を取得します:/呼び出す前に要素がhasNextにあるかどうかを確認します.
  • remove()=next()で読み込む要素を削除/next(オプション)
  • を先に読み込む必要がある.

    これでいいです.ArrayListではなく、Collectionインタフェースを実装した別のコレクションクラスを作成するオブジェクトに変更するだけです.
    List,set=iterator(可能)Map=iterator(直接呼び出し不可)
    Mapインタフェースはiteratorをサポートしていません!
    逆に、iterator()を取得するには、keySet()やentrySet()などの方法でそれぞれSetとして鍵と値を取得し、iterator()を再度呼び出す必要があります.

    ListIteratorとEnumeration


    1.Enumerationは、反復器の古いバージョンと考えられます.
    2.ListIdentratorは、反復器によって追加された機能を継承するため、集合要素にアクセスすると、反復器は一方向/双方向に移動することができる.
    既存の反復メソッド+その他のメソッド
    -boolean hasPrevious()=取得する前の要素があるかどうかを確認
    -Object prefer()=前の要素を取得します.
    -int previousIndex()=前の要素インデックスを返す
    -nextIndex()=次の要素のindexを返します
    -void add()=新しいオブジェクトを追加(オプション)
    -void remove=next()またはprefer()読み取り済み要素を削除(オプション)
    -void set=next()またはprefer()で読み込まれた要素を指定したオブジェクトに変更します(オプション)

    せんたくきのう

  • の方法では、選択的機能としてマークされるものは必ずしも実現される必要はない.
    たとえばremove()は実装する必要はありませんが、抽象的な方法学の体幹を作成する必要があります.
  • public void remove(){
    throw new UnsupportedOperationException();
    }
    メソッドを呼び出す側に例外を発行し、これが実装されていない機能であることを通知することが望ましい.
    ただし、Unsupported OperationException()はRuntimeExceptionの子(unchecked例外)であるため、異常処理(?)を行う必要はありません.(このセクションは後で決定します)
    うん...iteratorには、メソッドによる使用と実装の2つの方法があります.確かではありません.もう一度聞いてみなければなりません.

    Arrays


    1.配列のコピー


    -copyOf(a,b)=a配列のb(index)(最後にxを含む)
    -copyRange(a,2,4)=a配列の2~4(index)(最後のxを含む)

    2.充填方式


    -fill(a,9)=配列aを9に塗りつぶす
    -setAll(a,ramdaor関数型インタフェース)=ramdal形式でaを塗りつぶす

    3.並べ替えと検索


    -sort(a)=配列a
    -binarySearch(a,2)=配列aを並べ替えるindex=2値
  • sortアレイのソート用
  • バイナリ検索ソートのための配列.また、一致する要素が複数あると、何が返されるか分かりません.
  • シーケンス検索とバイナリ検索


    1.逐次検索は、最初の面要素から1つずつ検索する方法です.整然と並ぶ必要はありませんが、一つ一つ比較するのに時間がかかります.
    2.バイナリ検索は配列範囲を半分に縮小することを繰り返すため、検索速度は速いが、配列は整列しなければならない.

    4.アレイの比較と出力


    -toString()/deepTo String()
    -equals() '
    toString=すべての配列文字列/depTo String()=多次元に出力
    equals()=配列に格納されているすべての要素/T/Fを比較する

    5.配列をListに変換


    asList(Object...a)

  • リストに並べ替えて返します.ただし、このように生成されたlistはサイズを変更することはできません.つまり、削除を追加することはできません.保存されている内容は変更できます.

  • パラメータのタイプは可変パラメータなので、アレイを作成する必要がなく格納する要素のみをリストすることもできます.

  • 変更したい場合
  • List list=new ArrayList(Arrays.asList(1,2,3,4,5);