マップには、キーに基づいた値、つまりキーと値のペアが含まれます。各キーと値のペアはエントリと呼ばれます。マップには一意のキーが含まれます。
マップは、キーに基づいて要素を検索、更新、または削除する必要がある場合に便利です。
Java マップ階層
Java で Map を実装するには、Map と SortedMap という 2 つのインターフェイスと、HashMap、LinkedHashMap、および TreeMap の 3 つのクラスがあります。 Java Map の階層は次のとおりです。
マップでは重複キーは許可されませんが、重複値を持つことはできます。 HashMap と LinkedHashMap では null キーと値が許可されますが、TreeMap では null キーまたは値が許可されません。
Map は横断できないため、次を使用して Set に変換する必要があります。 キーセット() または エントリーセット() 方法。
クラス | 説明 |
---|---|
ハッシュマップ | HashMap は Map の実装ですが、順序は維持されません。 |
リンクされたハッシュマップ | LinkedHashMap は Map の実装です。 HashMapクラスを継承しています。挿入順序は維持されます。 |
ツリーマップ | TreeMap は Map と SortedMap の実装です。昇順を維持します。 |
Mapインターフェースの便利なメソッド
方法 | 説明 |
---|---|
V put(オブジェクトキー, オブジェクト値) | マップにエントリを挿入するために使用されます。 |
void putAll(マップマップ) | 指定したマップをマップに挿入するために使用されます。 |
V putIfAbsent(K キー, V 値) | まだ指定されていない場合にのみ、指定された値と指定されたキーがマップに挿入されます。 |
V 削除(オブジェクトキー) | 指定したキーのエントリを削除するために使用されます。 |
ブール値の削除(オブジェクトのキー、オブジェクトの値) | 指定された値と関連付けられた指定されたキーをマップから削除します。 |
keySet() を設定します | すべてのキーを含む Set ビューを返します。 |
セット | すべてのキーと値を含む Set ビューを返します。 |
ボイドクリア() | マップをリセットするときに使用します。 |
V compute(K キー、BiFunction remappingFunction) | これは、指定されたキーとその現在のマップ値 (または、現在のマッピングがない場合は null) のマッピングを計算するために使用されます。 |
V computeIfAbsent(K キー、関数マッピング関数) | これは、指定されたキーがまだ値に関連付けられていない (または null にマップされている) 場合に、指定されたマッピング関数を使用してその値を計算するために使用され、null でない限りそのキーをこのマップに入力します。 |
V computeIfPresent(K キー、BiFunction remappingFunction) | これは、指定されたキーの値が存在し、null でない場合に、キーとその現在マップされた値を指定して新しいマッピングを計算するために使用されます。 |
ブール値 containsValue(オブジェクト値) | このメソッドは、値と等しい値がマップ内に存在する場合は true を返し、それ以外の場合は false を返します。 |
ブール値 containsKey(オブジェクト キー) | このメソッドは、キーと等しいキーがマップ内に存在する場合は true を返し、それ以外の場合は false を返します。 |
ブール値等しい(オブジェクト o) | 指定されたオブジェクトとマップを比較するために使用されます。 |
void forEach(BiConsumer アクション) | すべてのエントリが処理されるまで、またはアクションが例外をスローするまで、マップ内の各エントリに対して指定されたアクションを実行します。 |
V get(オブジェクトキー) | このメソッドは、キーに関連付けられた値を含むオブジェクトを返します。 |
V getOrDefault(オブジェクトキー, VdefaultValue) | 指定されたキーがマップされている値を返します。マップにキーのマッピングが含まれていない場合は、defaultValue を返します。 |
int ハッシュコード() | マップのハッシュ コード値を返します。 |
ブール値 isEmpty() | このメソッドは、マップが空の場合は true を返します。少なくとも 1 つのキーが含まれている場合は false を返します。 |
Vマージ(Kキー、V値、BiFunctionリマッピング関数) | 指定されたキーがまだ値に関連付けられていない場合、または null に関連付けられている場合は、そのキーを指定された null 以外の値に関連付けます。 |
V replace(Kキー、V値) | 指定されたキーの指定された値を置き換えます。 |
boolean replace(K キー、V oldValue、V newValue) | 指定されたキーの古い値を新しい値に置き換えます。 |
void replaceAll(BiFunction 関数) | すべてのエントリが処理されるか、関数が例外をスローするまで、各エントリの値をそのエントリに対して指定された関数を呼び出した結果に置き換えます。 |
コレクションの値() | マップに含まれる値のコレクション ビューを返します。 |
int サイズ() | このメソッドは、マップ内のエントリの数を返します。 |
Map.Entry インターフェイス
Entry は Map のサブインターフェースです。したがって、Map.Entry 名によってアクセスされます。これは、要素がこのクラスに属するマップのコレクション ビューを返します。キーと値を取得するメソッドを提供します。
Map.Entryインターフェースのメソッド
方法 | 説明 |
---|---|
K getKey() | キーを取得するために使用されます。 |
V getValue() | 価値を得るために使われます。 |
int ハッシュコード() | hashCodeを取得するために使用されます。 |
V setValue(V 値) | このエントリに対応する値を指定された値に置き換えるのに使用されます。 |
ブール値等しい(オブジェクト o) | 指定されたオブジェクトを他の既存のオブジェクトと比較するために使用されます。 |
静的 | キー上の自然な順序でオブジェクトを比較するコンパレータを返します。 |
静的コンパレータ | 指定されたコンパレータを使用してキーごとにオブジェクトを比較するコンパレータを返します。 |
静的 | 値に基づいて自然な順序でオブジェクトを比較するコンパレータを返します。 |
静的コンパレータ | 指定されたコンパレータを使用してオブジェクトを値で比較するコンパレータを返します。 |
Java マップの例: 非ジェネリック (古いスタイル)
//Non-generic import java.util.*; public class MapExample1 { public static void main(String[] args) { Map map=new HashMap(); //Adding elements to map map.put(1,'Amit'); map.put(5,'Rahul'); map.put(2,'Jai'); map.put(6,'Amit'); //Traversing Map Set set=map.entrySet();//Converting to Set so that we can traverse Iterator itr=set.iterator(); while(itr.hasNext()){ //Converting to Map.Entry so that we can get key and value separately Map.Entry entry=(Map.Entry)itr.next(); System.out.println(entry.getKey()+' '+entry.getValue()); } } }
出力:
1 Amit 2 Jai 5 Rahul 6 Amit
Java マップの例: 汎用 (新しいスタイル)
import java.util.*; class MapExample2{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Elements can traverse in any order for(Map.Entry m:map.entrySet()){ System.out.println(m.getKey()+' '+m.getValue()); } } }
出力:
102 Rahul 100 Amit 101 Vijay
Java マップの例: CompareByKey()
import java.util.*; class MapExample3{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Returns a Set view of the mappings contained in this map map.entrySet() //Returns a sequential Stream with this collection as its source .stream() //Sorted according to the provided Comparator .sorted(Map.Entry.comparingByKey()) //Performs an action for each element of this stream .forEach(System.out::println); } }
出力:
100=Amit 101=Vijay 102=Rahul
Java マップの例: 降順での CompareByKey()
import java.util.*; class MapExample4{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Returns a Set view of the mappings contained in this map map.entrySet() //Returns a sequential Stream with this collection as its source .stream() //Sorted according to the provided Comparator .sorted(Map.Entry.comparingByKey(Comparator.reverseOrder())) //Performs an action for each element of this stream .forEach(System.out::println); } }
出力:
ランダムSQLで並べ替える
102=Rahul 101=Vijay 100=Amit
Java マップの例:comparingByValue()
import java.util.*; class MapExample5{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Returns a Set view of the mappings contained in this map map.entrySet() //Returns a sequential Stream with this collection as its source .stream() //Sorted according to the provided Comparator .sorted(Map.Entry.comparingByValue()) //Performs an action for each element of this stream .forEach(System.out::println); } }
出力:
100=Amit 102=Rahul 101=Vijay
Java マップの例: 降順での CompareByValue()
import java.util.*; class MapExample6{ public static void main(String args[]){ Map map=new HashMap(); map.put(100,'Amit'); map.put(101,'Vijay'); map.put(102,'Rahul'); //Returns a Set view of the mappings contained in this map map.entrySet() //Returns a sequential Stream with this collection as its source .stream() //Sorted according to the provided Comparator .sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())) //Performs an action for each element of this stream .forEach(System.out::println); } }
出力:
101=Vijay 102=Rahul 100=Amit