JavaでMapから指定したキー以下・未満の部分要素を取得する方法について記載します。
目次
キー以下・未満の部分要素を取得する方法
NavigableMap の headmap メソッドを使用します。
メソッド | 戻り値 | 処理 |
---|---|---|
headMap(K toKey) | SortedMap<K,V> | 指定したキー未満(<)の部分要素を取得します。 該当する要素が存在しない場合は、空のMapを返します。 |
headMap(K toKey, boolean inclusive) | NavigableMap<K,V> | 第2引数に true を指定すると、指定したキー以下(<=)の部分要素を取得します。 該当する要素が存在しない場合は、空のMapを返します。 |
1. headMap(K toKey)
指定したキー未満の部分要素を取得する場合は、このメソッドを使用します。
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
NavigableMap<Integer,String> map = new TreeMap<>(); map.put(1, "one"); map.put(2, "two"); map.put(3, "three"); map.put(4, "four"); map.put(5, "five"); // 3未満のキーを持つ要素を取得 SortedMap<Integer,String> rsltMap1 = map.headMap(3); System.out.println(rsltMap1); // {1=one, 2=two} // 条件に一致した各要素にアクセス for( Map.Entry<Integer,String> parts : rsltMap1.entrySet() ) { System.out.println( parts.getKey() ); // key System.out.println( parts.getValue() ); // value } // 条件に一致しない場合は、空のMapを返します SortedMap<Integer,String> rsltMap2 = map.headMap(0); System.out.println(rsltMap2); // {} System.out.println(rsltMap2.size()); // 0 |
2. headMap(K toKey, boolean inclusive)
指定したキー以下の部分要素を取得する場合は、このメソッドを使用します。
実行例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
NavigableMap<Integer,String> map = new TreeMap<>(); map.put(1, "one"); map.put(2, "two"); map.put(3, "three"); map.put(4, "four"); map.put(5, "five"); // 3以下のキーを持つ要素を取得 NavigableMap<Integer,String> rsltMap1 = map.headMap(3, true); System.out.println(rsltMap1); // {1=one, 2=two, 3=three} // 条件に一致した各要素にアクセス for( Integer key : rsltMap1.keySet() ) { System.out.println( key ); // key System.out.println( rsltMap1.get(key) ); // value } // 条件に一致しない場合は、空のMapを返します NavigableMap<Integer,String> rsltMap2 = map.headMap(0, true); System.out.println(rsltMap2); // {} System.out.println(rsltMap2.size()); // 0 |