ホームページ Java &#&チュートリアル Java の Map に関する 9 つの主要な問題の分析

Java の Map に関する 9 つの主要な問題の分析

Jan 19, 2017 am 10:38 AM
java map

一般的に言えば、Map はキーと値のペアで構成されるデータ構造であり、各キーはコレクション内で一意です。 Java の Map に関する 9 つの主要な問題を説明するために、キーと値を表す K と V を使用してみましょう。
0. Map を List 型に変換する
Java では、Map インターフェイスは、キー セット、値セット、およびキーと値のセットの 3 つのコレクション取得メソッドを提供します。これらはすべて、コンストラクターまたは addAll() メソッドを通じて List 型に変換できます。次のコードは、Map から ArrayList を構築する方法を示しています。

// key list
List keyList = new ArrayList(map.keySet());
// value list
List valueList = new ArrayList(map.valueSet());
// key-value list
List entryList = new ArrayList(map.entrySet());
ログイン後にコピー

1. Entry を通じて Map を走査する
Java でキーと値のペアとして存在するこの方法は、Map.Entry と呼ばれます。 Map.entrySet() はキーと値のセットを返します。これは非常に効率的なトラバーサル メソッドです。

for(Entry entry: map.entrySet()) {
// get key
K key = entry.getKey();
// get value
V value = entry.getValue();
}
ログイン後にコピー

イテレーター 特に JDK1.5 より前ではよく使用されます

Iterator itr = map.entrySet().iterator();
while(itr.hasNext()) {
Entry entry = itr.next();
// get key
K key = entry.getKey();
// get value
V value = entry.getValue();
}
ログイン後にコピー

2. キーによるマップのソート
ソートには、比較コンパレーターを使用して以下を実現することが必要です。

List list = new ArrayList(map.entrySet());
Collections.sort(list, new Comparator() {
@Override
public int compare(Entry e1, Entry e2) {
return e1.getKey().compareTo(e2.getKey());
}
});
ログイン後にコピー

もう 1 つの方法は SortedMap を使用する方法ですが、Comparable インターフェイスを実装する必要があります。

SortedMap sortedMap = new TreeMap(new Comparator() {
@Override
public int compare(K k1, K k2) {
return k1.compareTo(k2);
}
});
sortedMap.putAll(map);
ログイン後にコピー

3. 値でマップを並べ替えます

これは、前の点と多少似ています:

List list = new ArrayList(map.entrySet());
Collections.sort(list, new Comparator() {
@Override
public int compare(Entry e1, Entry e2) {
return e1.getValue().compareTo(e2.getValue());
}
});
ログイン後にコピー

4. 静的定数 Map を初期化する

Map、次の 2 つのメソッドがあり、スレッドセーフです。

Test1 では、マップは静的であると宣言しましたが、Test1.map.put(3,"three"); のように、初期化中にその値を変更できます。
Test2 では、内部クラスを渡し、次のように設定します。変更不可能な場合、Test2.map.put(3,"three") を実行すると、

UnsupportedOperationException 异常来禁止你修改。
 public class Test1 {
private static final Map map;
static {
map = new HashMap();
map.put(1, "one");
map.put(2, "two");
}
}
public class Test2 {
private static final Map map;
static {
Map aMap = new HashMap();
aMap.put(1, "one");
aMap.put(2, "two");
map = Collections.unmodifiableMap(aMap);
}
}
ログイン後にコピー

5、HashMap、TreeMap、および Hashtable がスローされます。

Map インターフェイスには、3 つの実装があります。ハッシュマップ、ツリーマップ、およびハッシュテーブル。
それらは異なります。詳細については、「HashMap vs. TreeMap vs. Hashtable vs. LinkedHashMap」の記事を参照してください。

6. Map での逆クエリ

Map にキーと値のペアを追加すると、Map 内のキーと値の間に 1 対 1 の対応があり、1 つのキーが 1 つのキーに対応することになります。価値。ただし、特定の値からキーを見つけるなど、逆クエリが必要になる場合があります。残念ながら、このデータ構造は双方向マップと呼ばれます。
Apache と Guava はこの双方向マップの実装を共同で提供しており、その実装ではキーと値の両方が 1:1 の関係を持つ必要があると規定されています。

7. マップのコピー

Java にはマップをコピーするためのメソッドが多数用意されていますが、それらのメソッドは常に同期されるとは限りません。簡単に言うと、マップが変更されても、コピーされたマップは同じままになります。以下はより効率的な実装方法です:
Map CopyedMap = Collections.synchronizedMap(map);
もちろん、クローン作成という別の方法もあります。ただし、Java の創始者である Josh Bloch は、こ​​のアプローチを推奨していません。彼はマップのクローン作成の問題についてインタビューで次のように述べています。クローン メソッドは、人々が本当に必要としているため、多くのクラスで提供されています。しかし、クローン作成には非常に制限があり、多くの場合、不必要な影響が生じます。
8. 空のマップを作成します
このマップが使用できないように設定されている場合は、次の方法で実現できます
map = Collections.emptyMap();
逆に、それを使用する場合は、直接
map = new HashMap( );

以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。また、皆さんも PHP 中国語 Web サイトをサポートしていただければ幸いです。

Java における Map の 9 つの主要な問題の分析に関するその他の関連記事については、PHP 中国語 Web サイトに注目してください。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Java Map のパフォーマンス最適化が明らかに: データ操作をより高速かつ効率的に Java Map のパフォーマンス最適化が明らかに: データ操作をより高速かつ効率的に Feb 20, 2024 am 08:31 AM

JavaMap は、Java 標準ライブラリで一般的に使用されるデータ構造であり、キーと値のペアの形式でデータを格納します。 Map のパフォーマンスは、アプリケーションの実行効率にとって非常に重要です。Map のパフォーマンスが低いと、アプリケーションの実行が遅くなったり、クラッシュしたりする可能性があります。 1. 適切な Map 実装を選択します。Java には、HashMap、TreeMap、LinkedHashMap などのさまざまな Map 実装が用意されています。各 Map 実装には独自の長所と短所があるため、Map 実装を選択するときは、アプリケーションの特定のニーズに基づいて適切な実装を選択する必要があります。 HashMap: HashMap は最も一般的に使用される Map 実装であり、ハッシュ テーブルを使用してデータを保存し、挿入、削除、検索の速度が速くなります。

Java Map の公開: 高速データ アクセスのためのヒントと戦略 Java Map の公開: 高速データ アクセスのためのヒントと戦略 Feb 19, 2024 pm 06:21 PM

JavaMap は、開発者がデータを迅速に保存および取得できるようにするキーと値のペアベースのデータ構造です。 Map のキーには任意のオブジェクトを指定でき、値には任意のタイプのデータを指定できます。マップ内の各キーには最大 1 つの値しか関連付けることができません。同じキーに複数の値が設定されている場合は、最後に設定された値のみが保持されます。 Map には主に 2 つの実装があります。 HashMap: ハッシュ テーブルを使用してキーと値のペアを格納します。 HashMap のパフォーマンスはハッシュ テーブルの実装方法に依存し、ほとんどの場合、HashMap の方が TreeMap よりも優れたパフォーマンスを発揮します。 TreeMap: 赤黒ツリーを使用してキーと値のペアを保存します。 TreeMap のパフォーマンスは HashMap と似ていますが、場合によっては TreeMap のパフォーマンスが劣る場合があります。

Java Map の謎を解く: トラバーサルのためのシンプルでわかりやすいガイド Java Map の謎を解く: トラバーサルのためのシンプルでわかりやすいガイド Feb 20, 2024 pm 12:00 PM

1. 概要 マップは Java コレクション フレームワークのメンバーであり、キーと値のペアの形式で要素を格納し、データの迅速な取得と変更を可能にします。その強力な機能と幅広い用途のため、マップ トラバーサル メソッドを習得することは Java プログラマーにとって必須のスキルです。 2. トラバース方法 Map ではさまざまなトラバース方法が用意されており、それぞれに長所と短所があり、ニーズに応じて選択できます。 3.keySet() は keySet() メソッドをトラバースして、Map 内のすべてのキーのコレクションを返します。イテレータまたは拡張 for ループを通じてキーをトラバースして、対応する値を取得できます。 // keySet() を使用して MapMapmap=newHashMap();map を走査します。

Java Map の高度なスキル: 意外と知られていない知識をマスターし、プログラミング スキルを向上させます Java Map の高度なスキル: 意外と知られていない知識をマスターし、プログラミング スキルを向上させます Feb 19, 2024 pm 12:33 PM

Map インターフェイスの概要 Map インターフェイスは、Java コレクション フレームワークでキーと値のペアを格納するために使用されるデータ構造です。これにより、キーを使用して、関連する値を検索および取得できます。 Map インターフェイスは、put()、get()、remove()、containsKey()、containsValue()、size()、isEmpty() など、多くの便利なメソッドを提供します。 Map の実装 Java で最も一般的に使用される Map 実装は、HashMap と TreeMap です。 HashMap は、キーのハッシュ値を計算することで値を迅速に検索して取得するハッシュ テーブル ベースの Map 実装です。 TreeMap は、キーを昇順または降順に並べ替える、赤黒ツリーに基づく Map 実装です。

上級者に必須のJava Mapの本質をマスターする 上級者に必須のJava Mapの本質をマスターする Feb 19, 2024 pm 06:00 PM

JavaMap は、キーを使用して値を保存および取得できるデータ構造です。マップ内のキーは一意であるため、同じキーに 2 つの値を保存することはできません。マップ内の値は、他のマップを含む任意のオブジェクトにすることができます。 Java ではマップは多くの用途に使用されます。たとえば、マップを使用して、ユーザー ID とパスワード、製品 ID と価格、またはファイル名とファイルの内容を保存できます。マップは、アプリケーション内に構成設定を保存するのにも最適です。 Java には、HashMap、TreeMap、LinkedHashMap の 3 つの組み込み Map 実装があります。 HashMap はハッシュ テーブルに基づく Map 実装であり、最も広く使用されている Map 実装です。ツリーマップは以下に基づいています

エンタープライズ アプリケーションにおける Java Map: 実際のプロジェクトにおける Java Map の強力な役割を探る エンタープライズ アプリケーションにおける Java Map: 実際のプロジェクトにおける Java Map の強力な役割を探る Feb 19, 2024 pm 01:27 PM

JavaMap は、キーと値のペアを使用してデータを保存できるデータ構造です。キーは一意ですが、値は任意のタイプのデータにすることができます。 Map は、HashMap、TreeMap、ConcurrentHashMap など、さまざまな方法で実装できます。エンタープライズ レベルのアプリケーションでは、マップをさまざまな目的に使用できます。たとえば、マップを次の目的で使用できます。 名前、電子メール アドレス、パスワードなどのユーザー データを保存します。名前、価格、説明などの製品データを保存します。顧客の名前、住所、購入した商品などの注文データを保存します。最近アクセスした Web ページやデータベース クエリ結果などのキャッシュ データを保存します。マップは、複雑なデータ構造を保存するのに最適です。たとえば、「Ma」を使用できます。

Java Map の拡張とカスタマイズ: カスタマイズのニーズを満たす独自のデータ構造を作成します。 Java Map の拡張とカスタマイズ: カスタマイズのニーズを満たす独自のデータ構造を作成します。 Feb 19, 2024 pm 09:50 PM

JavaMap は、さまざまなアプリケーション シナリオで使用できる非常に便利なデータ構造です。ただし、新しい機能の追加、走査順序の変更、カスタム シリアライザーの作成など、特定のニーズを満たすためにマップを拡張またはカスタマイズする必要がある場合があります。この記事では、カスタマイズのニーズを満たす独自のデータ構造を作成できるように、JavaMap を拡張およびカスタマイズする方法を紹介します。 1. JavaMap の拡張 JavaMap を拡張する最も簡単な方法は、java.util.Map インターフェースを継承する新しいクラスを作成することです。この新しいクラスは、新しいメソッドまたはプロパティを追加でき、Map インターフェイスのメソッドをオーバーライドすることもできます。たとえば、新しい Map クラスを作成し、キーと値のペアの合計を計算する新しいメソッドを追加できます。

Java Mapの魅力を探り、データ処理の問題を解決する Java Mapの魅力を探り、データ処理の問題を解決する Feb 19, 2024 pm 07:03 PM

マップの説明 マップは、キーと値のペアを格納できるデータ構造であり、キーは一意であり、値は任意のタイプのオブジェクトにすることができます。 Map インターフェイスは、キーと値のペアを保存および取得するためのメソッドを提供し、マップ内のキーと値のペアをトラバースできるようにします。 Map のタイプ Java には Map のさまざまな実装があり、最も一般的なものは HashMap、TreeMap、LinkedHashMap です。 HashMap: ハッシュ テーブルに基づく Map 実装。高速な検索、挿入、削除の特徴がありますが、順序付けされていません。つまり、Map 内のキーと値のペアの順序は任意に決定されます。 TreeMap: 赤黒ツリーに基づいた Map 実装。高速な検索、挿入、削除の特徴があり、

See all articles