JavaでMapから指定したキー以上・より大きい部分要素を取得する方法について記載します。
目次
キー以上・より大きい部分要素を取得する方法
NavigableMap の tailmap メソッドを使用します。
メソッド | 戻り値 | 処理 |
---|---|---|
tailMap(K fromKey) | SortedMap<K,V> | 指定したキー以上( >= )の部分要素を取得します。 該当する要素が存在しない場合は、空のMapを返します。 |
tailMap(K fromKey, boolean inclusive) | NavigableMap<K,V> | 第2引数に false を指定すると、指定したキーより大きい( > )部分要素を取得します。 該当する要素が存在しない場合は、空のMapを返します。 |
1. tailMap(K fromKey)
指定したキー以上の部分要素を取得する場合は、このメソッドを使用します。
実行例
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.tailMap(3); System.out.println(rsltMap1); // {3=three, 4=four, 5=five} // 条件に一致した各要素にアクセス 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.tailMap(6); System.out.println(rsltMap2); // {} System.out.println(rsltMap2.size()); // 0 |
2. tailMap(K fromKey, 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.tailMap(3, false); System.out.println(rsltMap1); // {4=four, 5=five} // 条件に一致した各要素にアクセス for( Integer key : rsltMap1.keySet() ) { System.out.println( key ); // key System.out.println( rsltMap1.get(key) ); // value } // 条件に一致しない場合は、空のMapを返します NavigableMap<Integer,String> rsltMap2 = map.tailMap(5, false); System.out.println(rsltMap2); // {} System.out.println(rsltMap2.size()); // 0 |