JavaTM 2 Platform
Standard Ed. 5.0

java.util
インタフェース SortedMap<K,V>

すべてのスーパーインタフェース:
Map<K,V>
既知の実装クラスの一覧:
TreeMap

public interface SortedMap<K,V>
extends Map<K,V>

マップ自身が昇順のキー順になることを保証します。ただし、キーの昇順は、そのキーの「自然順序付け」(Comparable インタフェースを参照) に従ってソートされた昇順、またはソートマップ作成時に提供されるコンパレータによってソートされた昇順です。この順序は、ソートマップのコレクションビュー (entrySetkeySetvalues メソッドによって返される) の繰り返し処理時に反映されます。その順序付けを利用するために、追加のオペレーションがいくつか提供されています。このインタフェースは SortedSet インタフェースのマップに類似しています。

ソートマップに挿入されるすべてのキーは、Comparable インタフェースを実装するか、指定されたコンパレータによって受け付けられる必要があります。さらに、そのようなすべてのキーは「相互に比較可能」である必要があります。つまり、k1.compareTo(k2) (または comparator.compare(k1, k2)) は、ソートマップ内の任意の要素 k1k2 に対しても ClassCastException をスローすべきではありません。この制約に違反すると、その違反側のメソッドやコンストラクタの呼び出しは ClassCastException をスローします。

ソートマップが正しく Map インタフェースを実装する必要がある場合は、明示的なコンパレータの提供の有無にかかわらず、ソートマップで管理される順序付けは「equals と一貫性」が必要です (「equals との一貫性」の正確な定義については、Comparable インタフェースまたは Comparator インタフェースを参照)。これは Map インタフェースが equals オペレーションに基づいて定義されるためですが、ソートマップはその compareTo メソッドまたは compare メソッドを使用してすべてのキー比較を実行するので、このメソッドによって等価と見なされる 2 つのキーは、ソートマップの見地からすれば同じものです。ツリーマップの動作は、その順序付けが equals と一貫性がない場合でも明確に定義されています。つまり、ツリーマップの動作は Map インタフェースの一般規約に従っていません。

汎用のソートマップ実装クラスはすべて、4 つの標準コンストラクタを提供する必要があります。その 4 つとは、1) そのキーの「自然順序付け」に従ってソートされた空のソートマップを作成する void (引数なし) コンストラクタ、2) 指定されたコンパレータに従ってソートされた空のソートマップを作成する、Comparator 型の引数を 1 つ持つコンストラクタ、3) キーの自然順序付けに従ってソートされた、その引数と同じキーと値のマッピングを持つ新しいマップを作成する、Map 型の引数を 1 つ持つコンストラクタ、4) 入力のソートマップと同じキーと値のマッピングと同じ順序付けを持つ新しいソートマップを作成する、ソートマップ型の引数を 1 つ持つコンストラクタです。インタフェースはコンストラクタを保持できないので、これを強制的に推奨することはできませんが、JDK の実装 (TreeMap) はこれに準拠します。

このインタフェースは、Java Collections Framework のメンバです。

導入されたバージョン:
1.2
関連項目:
Map, TreeMap, SortedSet, Comparator, Comparable, Collection, ClassCastException

入れ子のクラスの概要
 
インタフェース java.util.Map から継承された入れ子のクラス/インタフェース
Map.Entry<K,V>
 
メソッドの概要
 Comparator<? super K> comparator()
          このソートマップに関連したコンパレータを返します。
 K firstKey()
          ソートマップ内に現在ある最初 (下端) のキーを返します。
 SortedMap<K,V> headMap(K toKey)
          ソートマップの toKey より小さいキーを持つ部分のビューを返します。
 K lastKey()
          ソートマップ内に現在ある最後 (上端) のキーを返します。
 SortedMap<K,V> subMap(K fromKey, K toKey)
          このソートマップの fromKey (含む) 〜 toKey (含まない) のキー範囲を持つ部分のビューを返します (fromKeytoKey が同じ場合は、空のソートマップが返される)。
 SortedMap<K,V> tailMap(K fromKey)
          ソートマップの fromKey 以上のキーを持つ部分のビューを返します。
 
インタフェース java.util.Map から継承されたメソッド
clear, containsKey, containsValue, entrySet, equals, get, hashCode, isEmpty, keySet, put, putAll, remove, size, values
 

メソッドの詳細

comparator

Comparator<? super K> comparator()
このソートマップに関連したコンパレータを返します。ただし、そのキーの自然順序付けを使う場合は null を返します。

戻り値:
このソートマップに関連したコンパレータ。ただし、そのキーの自然順序付けを使う場合は null

subMap

SortedMap<K,V> subMap(K fromKey,
                      K toKey)
このソートマップの fromKey (含む) 〜 toKey (含まない) のキー範囲を持つ部分のビューを返します (fromKeytoKey が同じ場合は、空のソートマップが返される)。返されるソートマップはこのソートマップに基づいており、返されるソートマップでの変更はこのソートマップに反映され、この逆も成り立ちます。返される Map は、このソートマップがサポートする任意のマップオペレーションをすべてサポートします。

このメソッドによって返されるマップは、ユーザがキーを指定された範囲外に挿入しようとすると IllegalArgumentException をスローします。

注: このメソッドは常に、その下端点は含むが上端点は含まない「片側が開いた範囲」を返します。上下端点を含む「閉じた範囲」が必要で、キーの型により直後のキーの計算が可能な場合、単に lowEndpoint から直後のキー (highEndpoint) までの部分範囲を指定してください。たとえば、m はそのキーが文字列のマップである場合、次の慣用法は、キーが lowhigh までの範囲 (上下端点を含む) にある m 内のすべてのキーと値のマッピングを保持するビューを取得します。

    Map sub = m.subMap(low, high+"\0");
同様のテクニックを使用して、上下端点のどちらも含まない「開いた範囲」を生成できます。次の慣用法は、キーが lowhigh までの範囲 (上下端点を含まない) にある m 内のすべてのキーと値のマッピングを保持するビューを取得します。
    Map sub = m.subMap(low+"\0", high);

パラメータ:
fromKey - subMap の下端点 (これを含む)
toKey - subMap の上端点 (これを含まない)
戻り値:
このソートマップ内の指定された範囲のビュー
例外:
ClassCastException - このマップのコンパレータを使用して、fromKey および toKey を相互に比較できない場合 (または、マップに自然順序付けを使用するコンパレータがない場合)。fromKey または toKey をマップの現在のキーと比較できない場合、必ずしも要求されるわけではないが、この例外がスローされる場合がある
IllegalArgumentException - fromKeytoKey より大きい場合。または、このマップ自体が subMap、headMap、または tailMap で、fromKey または toKey が指定した範囲の subMap、headMap、または tailMap にない場合
NullPointerException - fromKey または toKeynull で、このソートマップが null キーを許容しない場合

headMap

SortedMap<K,V> headMap(K toKey)
ソートマップの toKey より小さいキーを持つ部分のビューを返します。返されるソートマップはこのソートマップに基づいており、返されるソートマップでの変更はこのソートマップに反映され、その逆も成り立ちます。返されるマップは、ソートマップがサポートするオプションのマップオペレーションをすべてサポートします。

このメソッドによって返されるマップは、ユーザがキーを指定された範囲外に挿入しようとすると IllegalArgumentException をスローします。

注: このメソッドは常に、その (上) 端点を含まないビューを返します。この端点を含むビューを必要とし、キーの型により直後のキーの計算が可能になる場合は、単に直後のキー (highEndpoint) によって限界を設けられた headMap を指定してください。たとえば、m はそのキーが文字列のマップである場合、次の慣用法は、キーが high 以下の m 内のすべてのキーと値のマッピングを保持するビューを取得します。

    Map head = m.headMap(high+"\0");

パラメータ:
toKey - subMap の上端点 (これを含まない)
戻り値:
ソートマップの指定された初期範囲のビュー
例外:
ClassCastException - toKey がこのマップのコンパレータと互換性がない場合 (または、マップにコンパレータがない場合、toKeyComparable が実装されていない場合)。toKey がマップの現在のキーと比較できない場合、必ずしも要求されるわけではないが、この例外がスローされる場合がある
IllegalArgumentException - このマップ自体が subMap、headMap、または tailMap で、toKey が指定した範囲の subMap、headMap、または tailMap にない場合
NullPointerException - toKeynull で、ソートマップが null キーを許容しない場合

tailMap

SortedMap<K,V> tailMap(K fromKey)
ソートマップの fromKey 以上のキーを持つ部分のビューを返します。返されるソートマップはこのソートマップに基づいており、返されるソートマップでの変更はこのソートマップに反映され、その逆も成り立ちます。返されるマップは、ソートマップがサポートするオプションのマップオペレーションをすべてサポートします。

このメソッドによって返されるマップは、ユーザがキーを指定された範囲外に挿入しようとすると IllegalArgumentException をスローします。

注: このメソッドは常に、その (下) 端点を含むビューを返します。この端点を含まないビューを必要とし、要素の型により直後の要素の計算が可能な場合、単に直後の値 (lowEndpoint) によって限界を設けられた tailMap を指定してください。たとえば、m はそのキーが文字列のマップである場合、次の慣用法は、キーが low より大きい m 内のすべてのキーと値のマッピングを保持するビューを取得します。

    Map tail = m.tailMap(low+"\0");

パラメータ:
fromKey - tailMap の下端点 (これを含む)
戻り値:
ソートマップの指定された最終範囲のビュー
例外:
ClassCastException - fromKey がこのマップのコンパレータと互換性がない場合 (または、マップにコンパレータがない場合、fromKeyComparable が実装されていない場合)。fromKey がマップの現在のキーと比較できない場合、必ずしも要求されるわけではないが、この例外がスローされる場合がある
IllegalArgumentException - このマップ自体が subMap、headMap、または tailMap で、fromKey が指定した範囲の subMap、headMap、または tailMap にない場合
NullPointerException - fromKeynull で、ソートマップが null キーを許容しない場合

firstKey

K firstKey()
ソートマップ内に現在ある最初 (下端) のキーを返します。

戻り値:
ソートマップ内に現在ある最初 (下端) のキー
例外:
NoSuchElementException - マップが空の場合

lastKey

K lastKey()
ソートマップ内に現在ある最後 (上端) のキーを返します。

戻り値:
ソートマップ内に現在ある最後 (上端) のキー
例外:
NoSuchElementException - マップが空の場合

JavaTM 2 Platform
Standard Ed. 5.0

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java 2 SDK SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。