JavaでMapから指定したキー値以下の最大値を取得する方法について記載します。
目次
指定したキー値以下の最大値を取得する方法
NavigableMap の floorEntry・floorKey メソッドを使用します。
メソッド | 戻り値 | 処理 |
---|---|---|
floorEntry(K key) | Map.Entry<K,V> | 指定したキー以下で最大のキー値を持つ、キーと値のペアを返します。 該当するキーが存在しない場合は、nullを返します。 |
floorKey(K key) | K | 指定したキー以下で最大のキー値を返します。 該当するキーが存在しない場合は、nullを返します。 |
1. floorEntry(K key)
条件に指定したキーに該当する、キーと値を取得する場合は、このメソッドを使用します。
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
NavigableMap<Integer,String> map = new TreeMap<>(); map.put(1, "one"); map.put(2, "two"); map.put(4, "four"); map.put(5, "five"); // ------------------------------------------------- // 2以下の最大のキーの key・value を取得 // ------------------------------------------------- Map.Entry<Integer,String> rsltMap1 = map.floorEntry(2); System.out.println(rsltMap1); // 2=two // keyを取得 Integer key1 = rsltMap1.getKey(); System.out.println(key1); // 2 // valueを取得 String value1 = rsltMap1.getValue(); System.out.println(value1); // two // ------------------------------------------------- // 3以下の最大のキーの key・value を取得 // ------------------------------------------------- Map.Entry<Integer,String> rsltMap2 = map.floorEntry(3); System.out.println(rsltMap2); // 2=two // ------------------------------------------------- // 0以下の最大のキーの key・value を取得(該当するキーがないため、null が返ります) // ------------------------------------------------- Map.Entry<Integer,String> rsltMap3 = map.floorEntry(0); System.out.println(rsltMap3); // null |
2. floorKey(K key)
条件に指定したキーに該当する、キーを取得する場合は、このメソッドを使用します。
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
NavigableMap<Integer,String> map = new TreeMap<>(); map.put(1, "one"); map.put(2, "two"); map.put(4, "four"); map.put(5, "five"); // 2以下の最大のキーの key を取得 Integer rsltKey1 = map.floorKey(2); System.out.println(rsltKey1); // 2 // 3以下の最大のキーの key を取得 Integer rsltKey2 = map.floorKey(3); System.out.println(rsltKey2); // 2 // 0以下の最大のキーの key を取得(該当するキーがないため、null が返ります) Integer rsltKey3 = map.floorKey(0); System.out.println(rsltKey3); // null |