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

既知の実装クラスの一覧:
AbstractCache

public interface Cache

オブジェクトをメモリ上にキャッシュする為に有用な機能を追加した、マップ構造のインタフェースを定義します。
また、このインターフェースは独立したデータ型ではなく、Map インターフェースを基にするアダプタとして定義されています。

マップに対して、サイズの上限指定やエントリの順序、参照モデルの応用等の付加機能を提供するメモリベースの簡易キャッシュです。

このオブジェクトはスレッドセーフである必要があります。
また複数のオペレーションをスレッドセーフに制御する為に getMutex() から適切な同期オブジェクトを返す必要があります。


メソッドの概要
 void clear()
          キャッシュをクリアします。
 boolean containsKey(java.lang.Object key)
          指定のキーが存在する場合は true を返却します。
 boolean containsValue(java.lang.Object value)
          指定のキャッシュデータが存在する場合は true を返却します。
 java.util.Set entrySet()
          キャッシュエントリのセットビューを返却します、要素は Map.Entry 型です。
 java.lang.Object get(java.lang.Object key)
          指定のキーに対応するキャッシュデータを返却します。
 FFactory getFactory()
          登録されている、生成ファンクタを返却します。
 int getMaxSize()
          最大キャッシュサイズを返却します。
 java.lang.Object getMutex()
          キャッシュをスレッドセーフに制御する同期を取る為の参照を返却します。
 boolean isEmpty()
          キャッシュが空の場合に true を返却します。
 boolean isLimit()
          キャッシュサイズが上限に達しているか検証します。
 java.util.Set keySet()
          キーのセットビューを返却します。
 java.lang.Object put(java.lang.Object key, java.lang.Object value)
          指定のキーとキャッシュデータを格納します。
 void putAll(Cache t)
          指定されたキャッシュのエントリを全て格納します。
 void putAll(java.util.Map t)
          指定されたマップのエントリをキャッシュエントリとして全て格納します。
 java.lang.Object remove(java.lang.Object key)
          指定のキーに対応するキャッシュエントリを削除してキャッシュデータを返却します。
 boolean resize(int newSize)
          指定のキャッシュ数にリサイズします。
 void setFactory(FFactory factory)
          指定のキーが存在しない場合にデータを生成する、生成ファンクタを登録します。
 void setMaxSize(int maxSize)
          最大キャッシュサイズを設定します。
 int size()
          現在のキャッシュサイズを返します。
 java.util.Collection values()
          キャッシュデータのコレクションビューを返却します。
 

メソッドの詳細

getMutex

public java.lang.Object getMutex()
キャッシュをスレッドセーフに制御する同期を取る為の参照を返却します。
    Cache c = new Cache();

    synchronized(c.getMutex()) {  // Synchronizing mutex object!
        if(c.containsKey("name")){
            c.put("name", "Alexander");
        }
        ...
    }
 

戻り値:
キャッシュをスレッドセーフに制御する同期オブジェクト

size

public int size()
現在のキャッシュサイズを返します。

戻り値:
現在のキャッシュサイズ

clear

public void clear()
キャッシュをクリアします。


getMaxSize

public int getMaxSize()
最大キャッシュサイズを返却します。
maxSize が負数の場合は上限無しを示します。

戻り値:
最大キャッシュサイズ。

setMaxSize

public void setMaxSize(int maxSize)
最大キャッシュサイズを設定します。
maxSize が上限無し(負数)以外で (maxSize < size()) の場合はリサイズを行います。

パラメータ:
maxSize - 最大キャッシュサイズ

isLimit

public boolean isLimit()
キャッシュサイズが上限に達しているか検証します。

戻り値:
キャッシュサイズが上限に達している場合は true

resize

public boolean resize(int newSize)
指定のキャッシュ数にリサイズします。
削除されるエントリの規準は実装に依存します。
実際には (newSize < size()) の場合はリサイズされます。
newSize が負数の場合は IllegalArgumentException を発生させます。

パラメータ:
newSize -
戻り値:
実際にリサイズされた場合は true
例外:
java.lang.IllegalArgumentException - size が負数の場合

isEmpty

public boolean isEmpty()
キャッシュが空の場合に true を返却します。

戻り値:
キャッシュが空の場合に true

containsKey

public boolean containsKey(java.lang.Object key)
指定のキーが存在する場合は true を返却します。

パラメータ:
key - 検証するキー
戻り値:
指定のキーが存在する場合は true

containsValue

public boolean containsValue(java.lang.Object value)
指定のキャッシュデータが存在する場合は true を返却します。

パラメータ:
value - 検証するキャッシュデータ
戻り値:
指定のキャッシュデータが存在する場合は true

get

public java.lang.Object get(java.lang.Object key)
指定のキーに対応するキャッシュデータを返却します。
キーが存在しない場合に生成ファンクタが登録されているならば生成ファンクタから生成して返却し、以外は null を返します。

パラメータ:
key - キー
戻り値:
指定のキーに対応するキャッシュデータ

getFactory

public FFactory getFactory()
登録されている、生成ファンクタを返却します。
登録されていない場合は null を返します

戻り値:
生成ファンクタ

setFactory

public void setFactory(FFactory factory)
指定のキーが存在しない場合にデータを生成する、生成ファンクタを登録します。
生成ファンクタから生成されたデータは引数のキーでキャッシュされます。
FFactory.create(Object o) の引数にはキーが渡されます。

パラメータ:
factory - 生成ファンクタ

remove

public java.lang.Object remove(java.lang.Object key)
指定のキーに対応するキャッシュエントリを削除してキャッシュデータを返却します。
キーが存在しない場合は null を返します。

パラメータ:
key - キー
戻り値:
削除されたキャッシュデータ、キーが存在しない場合は null

put

public java.lang.Object put(java.lang.Object key,
                            java.lang.Object value)
指定のキーとキャッシュデータを格納します。
エントリが追加されると同時に (getMaxSize() < (size() + 1)) の場合はリサイズされます。
既にキーが存在する場合はそのキャッシュデータを上書きします。
上書きされた場合は元のキャッシュデータを返却します、以外は null を返却します。

パラメータ:
key - キー
value - キャッシュデータ
戻り値:
上書きされた場合は元のキャッシュデータ、以外は null

putAll

public void putAll(Cache t)
指定されたキャッシュのエントリを全て格納します。
エントリが追加されると同時に (getMaxSize() < (size() + 1)) の場合はリサイズされます。

パラメータ:
t - キャッシュ

putAll

public void putAll(java.util.Map t)
指定されたマップのエントリをキャッシュエントリとして全て格納します。
エントリが追加されると同時に (getMaxSize() < (size() + 1)) の場合はリサイズされます。

パラメータ:
t - マップ

entrySet

public java.util.Set entrySet()
キャッシュエントリのセットビューを返却します、要素は Map.Entry 型です。
このビューのオペレーションは getMutex() のオブジェクトにより同期されます。

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

戻り値:
キャッシュデータのコレクションビュー

values

public java.util.Collection values()
キャッシュデータのコレクションビューを返却します。
このビューのオペレーションは getMutex() のオブジェクトにより同期されます。

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

戻り値:
キャッシュデータのコレクションビュー

keySet

public java.util.Set keySet()
キーのセットビューを返却します。
このビューのオペレーションは getMutex() のオブジェクトにより同期されます。

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

戻り値:
キーのセットビュー