近接したキーを取得するためのマップ – 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) | 指定したキーよりも小さいキーで最大のエントリーを取得 | |
| firstEntry() | 最小のキーでエントリーを取得(Java 21以降) | |
| lastEntry() | 最大のキーでエントリーを取得(Java 21以降) | |
| サブマップ | headMap(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) {
- var map = new TreeMap<String, String>() {
- {
- put("ketchup", "ケチャップ");
- put("margarine", "マーガリン");
- put("miso", "味噌");
- put("mustard", "マスタード");
- put("oil", "油");
- }
- };
- var 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
監修
山田祥寛(有限会社 WINGSプロジェクト)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NEC にてシステム企画業務に携わるが、2003年 4 月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト(https://wings.msn.to/)」の代表でもある。主な著書に『改訂 3 版JavaScript 本格入門』(技術評論社)、「独習シリーズ(C#・Python・PHP・Ruby・JSP&サーブレットなど)」(翔泳社)、「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravel など)」(Amazon Kindle)など。売り上げの累計は100万部を超える。