shohaku.core.collections
インタフェース Group

既知の実装クラスの一覧:
AbstractMapGroup, SingletonGroup, WrappedGroup

public interface Group

キーを識別子として複数の値をグループ化するオブジェクトです。
データ構造的には重複可能なマップ(マルチマップ)と類似です。

グループには、同一のキーを複数登録することはできません。
キーは必ず一意であり、キー対応する値を必ず0個以上保持しています。

グループ化された値の集まりに対して値の重複が許されるか、また要素に順序を持つかは各実装によって異なります。

このインターフェースは Java Collections Framework の独自拡張の位置付けです。


入れ子クラスの概要
static interface Group.Entry
          グループのエントリ (キーとコレクションのペア) です。
 
メソッドの概要
 boolean add(java.lang.Object key)
          指定されたキーに対するコレクションを追加します (任意のオペレーション)。
 boolean add(java.lang.Object key, java.lang.Object value)
          指定された値を指定されたキーに対応するコレクションに追加します (任意のオペレーション)。
 void addAll(Group g)
          指定されたグループのすべてのキーと対応する全値ををこのグループに追加します (任意のオペレーション)。
 boolean addAll(java.lang.Object key, java.util.Collection c)
          指定されたコレクションの全要素をキーに対応するコレクションに追加します (任意のオペレーション)。
 void clear()
          グループのマッピングをすべて削除します (任意のオペレーション)。
 boolean containsKey(java.lang.Object key)
          指定されたキーのマッピングがグループに含まれている場合に true を返します。
 boolean containsValue(java.lang.Object key, java.lang.Object value)
          グループが、キーのマッピングしているコレクションに指定された値を 1 つ以上含む場合に true を返します。
 java.util.Set entrySet()
          グループに含まれているグループエントリのセットビューを返します。
 boolean equals(java.lang.Object o)
          定されたオブジェクトがこのグループと等しいかどうかを比較します。
 java.util.Collection get(java.lang.Object key)
           指定されたキーにマッピングされたコレクションを返します。
 int hashCode()
          グループのハッシュコード値を返します。
 boolean isEmpty()
          グループがキーとコレクションのマッピングを保持しない場合に true を返します。
 java.util.Iterator iterator()
          グループに含まれるグループエントリの反復子を返します。
 java.util.Iterator iterator(java.lang.Object key)
          指定されたキーにマッピングされたコレクションの要素の反復子を返します。
 java.util.Set keySet()
          グループに含まれているキーのセットビューを返します。
 java.util.Collection remove(java.lang.Object key)
          このキーにマッピングがある場合に、そのマッピングをグループから削除します (任意のオペレーション)。
 boolean remove(java.lang.Object key, java.lang.Object value)
          このキーにマッピングがある場合に、そのマッピングの要素から指定の値を削除します (任意のオペレーション)。
 int size()
          グループ内のキーと値の集合の数を返します。
 int size(java.lang.Object key)
          グループ内のキーとマッピングする値のの要素数を返します。
 

メソッドの詳細

clear

public void clear()
グループのマッピングをすべて削除します (任意のオペレーション)。


isEmpty

public boolean isEmpty()
グループがキーとコレクションのマッピングを保持しない場合に true を返します。

戻り値:
グループがキーとコレクションのマッピングを保持しない場合は true

add

public boolean add(java.lang.Object key)
指定されたキーに対するコレクションを追加します (任意のオペレーション)。
グループに既にこのキーに対するマッピングがある場合何も行われません。
グループに既にこのキーに対するマッピングがある場合 true を返します。

パラメータ:
key - 指定されるコレクションが関連付けられるキー
戻り値:
既にこのキーに対するマッピングがある場合 true

add

public boolean add(java.lang.Object key,
                   java.lang.Object value)
指定された値を指定されたキーに対応するコレクションに追加します (任意のオペレーション)。
グループにこのキーに対するマッピングが存在しない場合は新規に追加されます。
グループに既にこのキーに対するマッピングがある場合 true を返します。

パラメータ:
key - 指定される値が関連付けられるキー
value - 指定されるキーに関連付けられる値
戻り値:
既にこのキーに対するマッピングがある場合 true

addAll

public boolean addAll(java.lang.Object key,
                      java.util.Collection c)
指定されたコレクションの全要素をキーに対応するコレクションに追加します (任意のオペレーション)。
グループにこのキーに対するマッピングが存在しない場合は新規に追加されます。
グループに既にこのキーに対するマッピングがある場合 true を返します。

パラメータ:
key - 指定されるコレクションの全要素が関連付けられるキー
c - 指定されるキーに関連付けられるコレクション
戻り値:
既にこのキーに対するマッピングがある場合 true

addAll

public void addAll(Group g)
指定されたグループのすべてのキーと対応する全値ををこのグループに追加します (任意のオペレーション)。

指定されたグループのキー k から値 v までの各マッピングに関して、 この呼び出しの効果は、putAll(k, v) を呼び出した場合と同じです。 指定されたグループがこのオペレーションの処理中に変更された場合、そのオペレーションの動作は指定外となります。

パラメータ:
g - グループに追加されるグループ

iterator

public java.util.Iterator iterator()
グループに含まれるグループエントリの反復子を返します。
反復子の要素は Group.Entry 型に為ります。 エントリが存在しない場合空の反復子が返ります。

戻り値:
グループエントリの反復子

iterator

public java.util.Iterator iterator(java.lang.Object key)
指定されたキーにマッピングされたコレクションの要素の反復子を返します。
指定されたキーにマッピングされたコレクションが存在しない場合空の反復子が返ります。

パラメータ:
key - 関連づけられている識別キー
戻り値:
キーにマッピングされたコレクションの反復子

get

public java.util.Collection get(java.lang.Object key)

指定されたキーにマッピングされたコレクションを返します。
グループがこのキーのマッピングを保持していない場合は null を返します。

戻り値に Collection の継承インターフェースの型が戻す実装も有り得ます。
つまり左記の処理が有効である実装が有り得ます、 List l = (List) group.get(key);

パラメータ:
key - 関連づけられている識別キー
戻り値:
指定のキーをマッピングするコレクション

remove

public java.util.Collection remove(java.lang.Object key)
このキーにマッピングがある場合に、そのマッピングをグループから削除します (任意のオペレーション)。

つまり、 (key==null ? k==null : key.equals(k)) という条件で、キー k からコレクション c までマッピングがグループに含まれる場合、このマッピングは削除されます。グループはこのようなマッピングを 1 つだけ含みます。

キーに以前マッピングされていたコレクションを返します。
このキーのマッピングがグループにない場合は、null を返します 1 度呼び出しが返れば、グループは指定されたキーのマッピングを含みません。

戻り値に Collection の継承インターフェースの型が戻す実装も有り得ます。
つまり左記の処理が有効である実装が有り得ます、 List l = (List) group.remove(key);

パラメータ:
key - 関連づけられている識別キー
戻り値:
指定されたキーとマッピングされていた以前のコレクション。キーのマッピングがなかった場合は null

remove

public boolean remove(java.lang.Object key,
                      java.lang.Object value)
このキーにマッピングがある場合に、そのマッピングの要素から指定の値を削除します (任意のオペレーション)。

つまり、 (k.equals(key)) という条件で、キー key のマッピングがグループに含まれる場合、 コレクション c に対して要素 value が (c.remove(value)) の条件で、これを削除します。

指定された要素がマッピングされたコレクション内に格納されていた場合には true を返します。
すなわち、この呼び出しの結果、グループが変更された場合に true を返します。

パラメータ:
key - 関連づけられている識別キー
value -
戻り値:
指定されたキーと関連付けられていた以前のコレクション。キーのマッピングがなかった場合は null

containsKey

public boolean containsKey(java.lang.Object key)
指定されたキーのマッピングがグループに含まれている場合に true を返します。

つまり、 (k.equals(key)) という条件で、キー key のマッピングがグループに含まれる場合に true を返します。
グループはこのようなマッピングを 1 つだけ含むことができます。

パラメータ:
key - マッピングされているか判定されるキー
戻り値:
グループが指定のキーのマッピングを保持する場合は true

containsValue

public boolean containsValue(java.lang.Object key,
                             java.lang.Object value)
グループが、キーのマッピングしているコレクションに指定された値を 1 つ以上含む場合に true を返します。

つまり、 (k.equals(key)) という条件で、キー key のマッピングがグループに含まれる場合、コレクション c に対して要素 value が (c.contains(value)) の条件で true の場合に true を返します。

パラメータ:
key - マッピングされているか判定されるキー
value - キーをマッピングしているコレクションの内に存在するか判定される値
戻り値:
グループが指定のキーにマッピングされるコレクションの内に値が存在する場合は true

keySet

public java.util.Set keySet()
グループに含まれているキーのセットビューを返します。

セットはグループと連動しているので、グループに対する変更はセットに反映され、 また、セットに対する変更はグループに反映されます。
セットに対する反復の処理中にグループが変更された場合は、反復の結果は保証されません。
セットは、Iterator.remove、Set.remove、removeAll、retainAll、および clear の各オペレーションを使って グループから対応するマッピングを削除する要素削除処理をサポートします。
add オペレーションと addAll オペレーションは、セットではサポートされていません。

戻り値:
グループに含まれているキーのセットビュー

entrySet

public java.util.Set entrySet()
グループに含まれているグループエントリのセットビューを返します。

セットはグループと連動しているので、グループに対する変更はセットに反映され、 また、セットに対する変更はグループに反映されます。
セットに対する反復の処理中にグループが変更された場合は、反復の結果は保証されません。
セットは、Iterator.remove、Set.remove、removeAll、retainAll、および clear の各オペレーションを使って グループから対応するマッピングを削除する要素削除処理をサポートします。
add オペレーションと addAll オペレーションは、セットではサポートされていません。

戻り値:
グループに含まれているグループエントリのセットビュー

size

public int size()
グループ内のキーと値の集合の数を返します。
グループに Integer.MAX_VALUE より多くの要素がある場合は、Integer.MAX_VALUE を返します。

戻り値:
マッピングの数

size

public int size(java.lang.Object key)
グループ内のキーとマッピングする値のの要素数を返します。
この値に Integer.MAX_VALUE より多くの要素がある場合は、Integer.MAX_VALUE を返します。

パラメータ:
key - キー
戻り値:
キーとマッピングする値のの要素数

hashCode

public int hashCode()
グループのハッシュコード値を返します。

グループのハッシュコードは、グループが保有する全てのグループエントリの hashCode の合計になるように定義されます。
これにより、Object.hashCode の一般規約によって要求されるように、任意の 2 つのグループ t1 と t2 で t1.equals(t2) であれば、t1.hashCode()==t2.hashCode() となることが保証されます。

戻り値:
グループのハッシュコード値

equals

public boolean equals(java.lang.Object o)
定されたオブジェクトがこのグループと等しいかどうかを比較します。

指定されたオブジェクトもグループであり、2 つの Group が同じグループエントリを表している場合は true を返します。
つまり、t1.entrySet().equals(t2.entrySet()) である場合、2 つのグループ t1 と t2 は同じグループエントリを表します。
これにより、Group インタフェースの実装が異なる場合でも、equals メソッドが正しく動作することが保証されます。

パラメータ:
o - グループと等しいかどうかを比較するオブジェクト
戻り値:
指定されたオブジェクトがグループと等しい場合は true