Foundation 1.1.2

java.util
インタフェース SortedMap

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

public interface SortedMap
extends Map

キーの自然順序付け (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 つの標準コンストラクタを提供する必要があります。1) void (引数なしの) コンストラクタ。これは、キーの自然順序付けに従ってソートされた空のソートマップを作成します。2) Comparator 型の単一引数を持つコンストラクタ。これは、指定されたコンパレータに従ってソートされた空のソートマップを作成します。3) Map 型の単一引数を持つコンストラクタ。これは、キーの自然順序付けに従ってソートされた、その引数と同じキーと値のマッピングを含む新しいマップを作成します。4) SortedMap 型の単一引数を持つコンストラクタ。これは、入力のソートマップと同一のキーと値のマッピングと順序付けとを持つ、新しいソートマップを作成します。インタフェースはコンストラクタを保持できないので、これは強制的なものではありませんが、SDK の実装 (TreeMap) はこれに従っています。

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

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

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

メソッドの詳細

comparator

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

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

subMap

SortedMap subMap(Object fromKey,
                 Object toKey)
このソートマップの fromKey (これを含む) 〜 toKey (これを含まない) のキー範囲を持つ部分のビューを返します。fromKeytoKey が等しい場合は、空のソートマップが返されます。返されるソートマップはこのソートマップに連動しており、返されるソートマップでの変更はこのソートマップに反映され、その逆の場合も同様です。返される Map は、このソートマップがサポートするオプションのマップオペレーションをすべてサポートします。

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

注:このメソッドは常に、その下端点を含むが上端点を含まない「片側が開いた範囲」を返します。上下端点を含む「閉じた範囲」が必要であり、そのキーの型で、指定されたキーの直後のキーの計算が可能な場合は、単に lowEndpointsuccessor(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 - マップのコンパレータを使用して、fromKeytoKey を相互に比較できない場合 (または、マップに自然順序付けを使用するコンパレータがない場合)。 実装は、マップ内に現在存在しているキーと fromKey または toKey とを比較できない場合にこの例外をスローすることができる。ただし、必須ではない
IllegalArgumentException - fromKeytoKey より大きい場合。または、このマップ自体が subMap、headMap、または tailMap で、fromKey または toKey が指定した範囲の subMap、headMap、または tailMap にない場合
NullPointerException - fromKey または toKeynull で、このソートマップが null キーを許容しない場合

headMap

SortedMap headMap(Object toKey)
このソートマップの toKey より厳密に小さいキーを持つ部分のビューを返します。返されるソートマップはこのソートマップに連動しており、返されるソートマップでの変更はこのソートマップに反映され、その逆の場合も同様です。返されるマップは、このソートマップがサポートするオプションのマップオペレーションをすべてサポートします。

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

注:このメソッドは常に、その上端点を含まないビューを返します。この端点を含むビューが必要であり、そのキーの型で、指定されたキーの直後のキーの計算が可能な場合は、単に successor(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 tailMap(Object fromKey)
このソートマップの fromKey 以上のキーを持つ部分のビューを返します。返されるソートマップはこのソートマップに連動しており、返されるソートマップでの変更はこのソートマップに反映され、その逆の場合も同様です。返されるマップは、このソートマップがサポートするオプションのマップオペレーションをすべてサポートします。

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

注:このメソッドは常に、その下端点を含むビューを返します。この端点を含まないビューを必要とし、その要素の型で、指定された値の直後の値の計算が可能な場合は、単に successor(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

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

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

lastKey

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

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

Foundation 1.1.2

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

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