Java8章XIIコレクションで20190825

章XIIコレクション

java.utilライブラリは、基本的なタイプがされた、この問題を解決するためのクラス(コレクションクラス)のかなり完全なセットを提供しListSetQueueMap

新しいクラスでレガシーコードを使用しないでくださいVectorHashtableStack

ジェネリックとタイプセーフなコレクション

new ArrayList<>()

時には「と呼ばれるダイヤモンドの文法」(ダイヤモンド構文)。Java 7の前に、型宣言の両端で行われている必要があります

ArrayList<Apple> apples = new ArrayList<Apple>();

ジェネリックパラメータの型が指定されており、専用のコレクションにオブジェクトの正確な型に限定されていない場合。上向きの遷移はまた、ジェネリックで同様の効果のような他のタイプに適用することができます。

素子群を追加

java.util、パッケージArraysCollectionsクラスの多くの実用的な方法があります。

List<Snow> snow2 = Arrays.asList(new Light(), new Heavy());
Collections.addAll(snow3, new Light(), new Heavy(), new Powder());

プリントコレクション

あなたは使用する必要がありますArrays.toString()印刷可能な形式の配列を生成します。しかし、任意の助けなしプリントコレクション。

リスト一覧

2つのタイプがありますList

  • 基本的なArrayList、良いアクセスランダム要素が、中央のリスト内の要素を挿入および削除するときに遅いです。
  • LinkedList途中で、低コストのリスト、シーケンシャルアクセスの最適化で行われ、その挿入および削除の操作。ランダムアクセスのためのLinkedListのは比較的遅いですが、それは、ArrayListのより大きい機能セットを持っています。

イテレータイテレータ

イテレータは、順番に移動し、各オブジェクトのシーケンスを選択したオブジェクトであり、クライアントのプログラマが知っているか、またはシーケンスの基本構造を気にしません。また、イテレータはしばしば呼ばれる軽量のオブジェクト(軽量オブジェクト):それのために小さな価格を作成します。だから、私たちはしばしばいくつかの奇妙なイテレータの制約を見ることができます。たとえば、Javaのイテレータは一方向の動きですイテレータにのみに使用されます。

  1. イテレータ()メソッドを使用して、要件のイテレータのセットを返します。イテレータはシーケンスの最初の要素を返すことができるようになります。
  2. シーケンスの次の要素を得るために、next()メソッドを使用します。
  3. 配列の要素があるかどうかのhasNext()メソッドのチェックを使用します。
  4. 最近削除された要素のイテレータを返すremove()メソッドを使用します。

Iteratorあなたはまた、削除することができますnext()最後の要素が生成し、呼び出しがあることを意味remove()する前に呼び出さなければなりませんがnext()

Iterator実際の電力は:配列の基礎となる構造のトラバース動作シーケンスから分離することができますこのような理由から、我々は時々言う:コレクションにアクセスするためのイテレータ統一された方法

反復子

反復子は、それが唯一のListクラスの様々な生成することができ、より強力なイテレータのサブタイプです。イテレータは前方にのみ移動することができ、および反復子は、双方向移動することができますアクションを。また、リストと前の要素のインデックス内の点に対するイテレータの現在位置を生成することができ、そして最近訪問した要素法を置き換えるセットを()を使用することがあります。冒頭でポイント反復子のリストを生成するための反復子()メソッドを呼び出すことによって、あなたはまた、反復子(n)を呼び出すことによって、n個の反復子のリスト要素のインデックス番号にスタートポイントを作成することができます。

LinkedListのリスト

LinkedListのは、スタック、キューまたは両端キュー(デキュー)として使用することができ、メソッドを追加します

スタックスタック

Javaの1.0が入って来Stackたクラス、設計が不十分な結果(下位互換性を維持するために、我々は常に、Javaの古い設計ミスに付着します)。Java 6の追加ArrayDeque方法は、直接スタック機能を実装含まれています、。

キューキュー

キューは、典型的な「あるFIFO」(FIFO)のコレクション。

LinkedListのキュー・インターフェースを実装し、キューの動作をサポートするための方法を提供し、したがって、キューの実装のLinkedListとして使用することができます。

オファーは、()コンテキストは、キュー要素の末尾に挿入されることができ、またはfalseを返したものでキュー方法に関連しています。PEEK()および要素()は、それを削除することなく、ヘッド素子を返すが、キューが空の場合、要素()はNoSuchElementExceptionをスロー、およびPEEK()はnullを返します。)(削除して、ヘッド素子を返しますが、キューが空の場合、ポーリングが()はnullを返し、削除することができポール()とremove()ははNoSuchElementExceptionをスローします。

プライオリティキュー優先度つきキュー

先入れ先出し(FIFO)キューは、最も一般的なルール(キューイング方式)について説明します。規律をキューイングすることは、所与のキュー内の要素のグループは、次のキュー要素ポップアップルールを決定する場合を指しますFIFOはポップ要素が最長待ち時間要素でなければなりません宣言されています。

ではJava 5の中で優先度つきキューを追加しました。

コレクションとイテレータ

Collection ルートインタフェースのすべてのシーケンスのセットがあります。

反復子は実現コレクション、クラスははるかに少ない適用順序の制約と比較して、最小限度と結合配列の接続及び消費のシーケンスを生成する方法です。

以下のためのインとイテレータ

Java 5のと呼ばれる反復処理可能インターフェース、イテレータを生成することができるイテレータ()メソッドを含むインタフェースを導入しました。-ためで、このインターフェイスのIterableトラバーサルシーケンスを使用して。そのため、反復処理可能で作成し実装するすべてのクラスは、あなたがのために、内のステートメントのためにそれを使用することができます。

用-内のステートメントは、配列やその他のIterablに適用される Eが、それはない配列は確かに反復処理可能であることを意味するものではありませ、あらゆる自動包装は発生しません。

おすすめ

転載: www.cnblogs.com/huangwenjie/p/11407536.html