LinkedHashMap クラス

定義

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

[Android.Runtime.Register("java/util/LinkedHashMap", DoNotGenerateAcw=true)]
[Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })]
public class LinkedHashMap : Java.Util.HashMap, IDisposable, Java.Interop.IJavaPeerable
[<Android.Runtime.Register("java/util/LinkedHashMap", DoNotGenerateAcw=true)>]
[<Java.Interop.JavaTypeParameters(new System.String[] { "K", "V" })>]
type LinkedHashMap = class
    inherit HashMap
    interface IMap
    interface IJavaObject
    interface IDisposable
    interface IJavaPeerable
継承
属性
実装

注釈

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。 この実装は、すべてのエントリを通じて実行される二重にリンクされたリストを維持するという点で HashMap 異なります。 このリンクリストは、反復順序を定義します。これは通常、キーがマップに挿入された順序 (挿入順序) です。 キーがマップに 再挿入 された場合、挿入順序は影響を受けないことを確認してください。 (呼び出しの直前に が返trueされるときに が呼び出されたm.containsKey(k)場合m.put(k, v)、キーkはマップmに再挿入されます)。

この実装では、(およびHashtable) によってHashMap提供される指定されていない、一般的に混同的な順序からクライアントを解放します。これにより、 に関連するTreeMapコストの増加は発生しません。 これは、元のマップの実装に関係なく、元のマップと同じ順序のマップのコピーを生成するために使用できます。

void foo(Map m) {
                    Map copy = new LinkedHashMap(m);
                    ...
                }

この手法は、モジュールが入力時にマップを受け取り、それをコピーし、後でコピーの順序によって決定される結果を返す場合に特に便利です。 (クライアントは一般に、提示された順序と同じ順序で返されることを高く評価しています)。

リンクされたハッシュ マップを作成するための特別な #LinkedHashMap(int,float,boolean) constructor ハッシュ マップが用意されています。このハッシュ マップの反復順序は、エントリが最後にアクセスされた順序であり、最も最近アクセスされた順から最近アクセスされた順序 (アクセス順) です。 この種のマップは、LRU キャッシュの構築に適しています。 、putIfAbsentget、、getOrDefaultcomputeIfAbsentcomputeIfPresentcomputeまたは merge の各メソッドをput呼び出すと、対応するエントリにアクセスできます (呼び出しが完了した後に存在すると仮定)。 メソッドは replace 、値が置き換えられた場合にのみエントリにアクセスします。 メソッドは putAll 、指定したマップのエントリ セット反復子によってキーと値のマッピングが提供される順序で、指定されたマップ内のマッピングごとに 1 つのエントリ アクセスを生成します。 他のメソッドはエントリ アクセスを生成しません。 特に、コレクション ビューに対する操作 、バッキング マップの反復順序には影響しません。

#removeEldestEntry(Map.Entry)新しいマッピングがマップに追加されたときに、古いマッピングを自動的に削除するためのポリシーを適用するために、 メソッドをオーバーライドできます。

このクラスは、すべての省略可能な Map 操作を提供し、null 要素を許可します。 と同様 HashMapに、ハッシュ関数がバケット間で要素を適切に分散すると仮定すると、基本的な操作 (addおよび containsremove) に一定時間のパフォーマンスが提供されます。 パフォーマンスは、 の少し下 HashMapにある可能性があります。これは、リンクされたリストを維持するための追加コストが原因です。ただし、1 つの例外があります。ただし、 のコレクション ビュー LinkedHashMap を反復処理するには、容量に関係なく、マップの サイズ に比例した時間が必要です。 に HashMap 対するイテレーションはコストが高くなる可能性が高く、 容量に比例した時間が必要です。

リンクされたハッシュ マップには、そのパフォーマンスに影響を与える 2 つのパラメーター ( 初期容量読み込み係数) があります。 これらは、 に対して HashMapと正確に定義されます。 ただし、初期容量に対して過度に高い値を選択した場合のペナルティは、このクラスの反復時間は容量の影響を受けないため、このクラスの場合よりも HashMap厳しくありません。

<strong>この実装は同期されないことに注意してください。</strong> 複数のスレッドがリンクされたハッシュ マップに同時にアクセスし、少なくとも 1 つのスレッドがマップを構造的に変更する場合は、<>em/em> を外部で同期する必要があります<。 これは通常、マップを自然にカプセル化するオブジェクトで同期することによって実現されます。

このようなオブジェクトが存在しない場合は、 メソッドを使用してマップを Collections#synchronizedMap Collections.synchronizedMap "ラップ" する必要があります。 これは、マップへの誤った同期されていないアクセスを防ぐために、作成時に行うのが最善です。

Map m = Collections.synchronizedMap(new LinkedHashMap(...));

構造の変更とは、1 つ以上のマッピングを追加または削除する操作です。アクセス順序付きのリンクされたハッシュ マップの場合は、反復順序に影響します。 挿入順序のリンクされたハッシュ マップでは、マップに既に含まれているキーに関連付けられている値を変更するだけでは、構造的な変更ではありません。 <strong>アクセス順序付きのリンクされたハッシュ マップでは、 を使用してマップ get に対してクエリを実行するだけで、構造が変更されます。 </strong>)

このクラスのすべてのコレクション ビュー メソッドによって返されるコレクションのメソッドによってiterator返される反復子は><、fail-fast</em> です。反復子が作成された後にいつでもマップが構造的に変更される場合、反復子の独自removeのメソッドを除き、反復子は をConcurrentModificationExceptionスローします。 したがって、同時変更に直面すると、反復子は、将来、決定論的でない任意の動作を危険にさらすのではなく、迅速かつクリーンに失敗します。

反復子のフェイル ファスト動作は、一般に、同期されていない同時変更が存在する場合にハード保証を行うことは不可能であるため、保証できないことに注意してください。 フェイルファスト反復子は、ベスト エフォートベースで スロー ConcurrentModificationException します。 したがって、この例外に依存するプログラムを正しく記述するのは間違っています。 反復子のフェイルファスト動作は、バグを検出するためにのみ使用する必要があります。

このクラスのすべてのコレクション ビュー メソッドによって返されるコレクションの spliterator メソッドによって返される分割子は<、遅延>バインディング</em>、em>fail-fast</em>、<さらに を報告Spliterator#ORDEREDします。 <em>Note</em>: Android Nougat (API レベル 24 および 25) でのこれらの分割子の実装では、 が報告 Spliterator#ORDEREDされているにもかかわらず、間違った順序 (正しい順序を使用する反復子と矛盾) が使用されます。 API レベル 24 および 25 で正しく順序付けられた Spliterator を取得するには、次のコード フラグメントを使用できます。<コレクション ビューc = lhm.keySet()の場合は ul<>li>、c = lhm.entrySet()または c = lhm.values()c.spliterator()代わりに を使用java.util.Spliterators.spliterator(c, c.spliterator().characteristics())します。 <li>または c.parallelStream()c.stream()代わりに を使用java.util.stream.StreamSupport.stream(spliterator, false)して、このような から (非パラメーター) java.util.stream.StreamSpliterator構築します。 </ul> これらの回避策は、 が の場合lhmLinkedHashMapにのみ推奨されることに注意してください。

このクラスは、 Java Collections Framework のメンバーです。

1.4 で追加されました。

の Java ドキュメント java.util.LinkedHashMap

このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。

コンストラクター

LinkedHashMap()

既定の初期容量 (16) と読み込み係数 (0) を使用して、空の挿入順序付き LinkedHashMap インスタンスを構築します。

LinkedHashMap(IDictionary)

指定したマップと同じマッピングを使用して、挿入順序付け LinkedHashMap されたインスタンスを構築します。

LinkedHashMap(Int32)

指定された初期容量と既定の読み込み係数 (0) を持つ空の挿入順序付き LinkedHashMap インスタンスを構築します。

LinkedHashMap(Int32, Single)

指定された初期容量と読み込み係数を持つ空の挿入順序付き LinkedHashMap インスタンスを構築します。

LinkedHashMap(Int32, Single, Boolean)

指定された初期容量、読み込み係数、順序付けモードで空 LinkedHashMap のインスタンスを構築します。

LinkedHashMap(IntPtr, JniHandleOwnership)

JNI オブジェクトのマネージド表現を作成するときに使用されるコンストラクター。ランタイムによって呼び出されます。

プロパティ

Class

この Objectのランタイム クラスを返します。

(継承元 Object)
Handle

基になる Android インスタンスへのハンドル。

(継承元 Object)
IsEmpty

追加する

(継承元 AbstractMap)
JniIdentityHashCode

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 Object)
JniPeerMembers

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

PeerReference

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 Object)
ThresholdClass

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用することを意図したものではありません。

ThresholdType

この API は Android 用 Mono インフラストラクチャをサポートしており、コードから直接使用することを意図したものではありません。

メソッド

Clear()

追加する

(継承元 AbstractMap)
Clone()

この HashMap インスタンスの簡易コピーを返します。キーと値自体は複製されません。

(継承元 HashMap)
Compute(Object, IBiFunction)

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 HashMap)
ComputeIfAbsent(Object, IFunction)

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 HashMap)
ComputeIfPresent(Object, IBiFunction)

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 HashMap)
ContainsKey(Object)

追加する

(継承元 AbstractMap)
ContainsValue(Object)

追加する

(継承元 AbstractMap)
Dispose()

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 Object)
Dispose(Boolean)

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 Object)
EntrySet()

このマップに Set 含まれるマッピングのビューを返します。

(継承元 HashMap)
Equals(Object)

他のオブジェクトがこのオブジェクトと "等しい" かどうかを示します。

(継承元 Object)
ForEach(IBiConsumer)

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 HashMap)
Get(Object)

追加する

(継承元 AbstractMap)
GetHashCode()

オブジェクトのハッシュ コード値を返します。

(継承元 Object)
GetOrDefault(Object, Object)

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 HashMap)
JavaFinalize()

ガベージ コレクションがオブジェクトへの参照がなくなったと判断したときに、オブジェクトのガベージ コレクターによって呼び出されます。

(継承元 Object)
KeySet()

追加する

(継承元 AbstractMap)
Merge(Object, Object, IBiFunction)

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 HashMap)
Notify()

このオブジェクトのモニターで待機している 1 つのスレッドをウェイクアップします。

(継承元 Object)
NotifyAll()

このオブジェクトのモニターで待機しているすべてのスレッドをウェイクアップします。

(継承元 Object)
Put(Object, Object)

追加する

(継承元 AbstractMap)
PutAll(IDictionary)

追加する

(継承元 AbstractMap)
PutIfAbsent(Object, Object)

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 HashMap)
Remove(Object)

追加する

(継承元 AbstractMap)
Remove(Object, Object)

指定したキーのマッピングが存在する場合は、このマップから削除します。

(継承元 HashMap)
RemoveEldestEntry(IMapEntry)

このマップで true 最も長いエントリを削除する必要がある場合は を返します。

Replace(Object, Object)

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 HashMap)
Replace(Object, Object, Object)

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 HashMap)
ReplaceAll(IBiFunction)

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 HashMap)
SetHandle(IntPtr, JniHandleOwnership)

Handle プロパティを設定します。

(継承元 Object)
Size()

追加する

(継承元 AbstractMap)
ToArray<T>()

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 Object)
ToString()

オブジェクトの文字列形式を返します。

(継承元 Object)
UnregisterFromRuntime()

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 Object)
Values()

追加する

(継承元 AbstractMap)
Wait()

現在のスレッドが起動するまで待機します。通常<>は、通知</em> または <em>割り込み</em によって待機します>。

(継承元 Object)
Wait(Int64)

現在のスレッドが起動するまで待機します。通常<>は、通知</em> または>< em 割り込み</em>、または一定のリアルタイムが経過するまで待機します。

(継承元 Object)
Wait(Int64, Int32)

現在のスレッドが起動するまで待機します。通常<>は、通知</em> または>< em 割り込み</em>、または一定のリアルタイムが経過するまで待機します。

(継承元 Object)

明示的なインターフェイスの実装

IJavaPeerable.Disposed()

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 Object)
IJavaPeerable.DisposeUnlessReferenced()

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 Object)
IJavaPeerable.Finalized()

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 Object)
IJavaPeerable.JniManagedPeerState

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

(継承元 Object)

拡張メソッド

JavaCast<TResult>(IJavaObject)

Android ランタイムチェック型変換を実行します。

JavaCast<TResult>(IJavaObject)

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

GetJniTypeName(IJavaPeerable)

予測可能な反復順序を持つインターフェイスの Map ハッシュ テーブルとリンク リストの実装。

適用対象