Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職

NavigableMap

近接したキーを取得するためのマップ – NavigableMapインターフェイス

NavigableMapは、指定されたキーに近接したキーを取得するための機能を備えたマップです。NavigableMapを利用することで、たとえば指定されたキー周辺のキーを取得したい、というような処理を手軽に実装できます。 NavigableMapインターフェイスで提供されている主なメンバーは、以下の通りです。

NavigableMapインターフェイスで利用できる主なメソッド
分類 メンバー 概要
キー ceilingKey(K key) 指定したキーと等しいか大きいキーで最小のキーを取得
floorKey(K key) 指定したキーと等しいか小さいキーで最大のキーを取得
higherKey(K key) 指定したキーよりも大きいキーで最小のキーを取得
lowerKey(K key) 指定したキーよりも小さいキーで最大のキーを取得
ceilingEntry(K key) 指定したキーと等しいか大きいキーで最小の値を取得
floorEntry(K key) 指定したキーと等しいか小さいキーで最大の値を取得
higherEntry(K key) 指定したキーよりも大きいキーで最小の値を取得
lowerEntry(K key) 指定したキーよりも小さいキーで最大の値を取得
サブマップ cheadMap(K toKey [,boolean inclusive]) 指定したキーよりも小さいキーを持つサブマップを取得
(引数inclusiveがtrueの場合は指定したキーと等しいものを含む)
tailMap(K fromKey [, boolean inclusive]) 指定したキーよりも大きいキーを持つサブマップを取得
(引数inclusiveがtrueの場合は指定キーと等しいものを含む)

前述のTreeMapクラスもまた、NavigableMapインターフェイスを実装しています。以下は、TreeMapを利用して、あらかじめ用意された辞書から目的の単語を検索する例です。単語を指定すると、それに最も近い前後の単語を候補として提案します。

CollNavigable.java

package com.example.mynavi.collection;

import java.util.NavigableMap;
import java.util.TreeMap;

public class CollNavigable {
  public static void main(String[] args) {
    NavigableMap<String, String> map = new TreeMap<String, String>() {
      {
        put("ketchup", "ケチャップ");
        put("margarine", "マーガリン");
        put("miso", "味噌");
        put("mustard", "マスタード");
        put("oil", "油");
      }
    };

    String key = "mayonnaise";

    System.out.print("お探しの調味料は");
    System.out.print(map.lowerEntry(key) + "または");
    System.out.print(map.ceilingEntry(key));
    System.out.println("ではありませんか?");
  }
}

↓

お探しの調味料はmargarine=マーガリンまたはmiso=味噌ではありませんか?
コレクションフレームワーク
コレクションフレームワーク
コレクションを初期化する
synchronizedList/synchronizedMap/synchronizedSetメソッド
ArrayListクラス
asListメソッド
toArrayメソッド
LinkedList
HashMap
TreeMap
NavigableMap
HashSet
ArrayDeque

Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職