倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

Java SE 6 のコレクション・フレームワークのメソッド (7) : ConcurrentMap, ConcurrentNavigableMap

あまり使ったことないので、メソッドの宣言だけ載せておきます(一覧)。

メソッドは独断と偏見で幾つかにカテゴリー分けしてます:

  • エントリーなどの取得:get() や keySet() など
  • エントリーの追加:put() など
  • エントリーの削除:remove() など

その他注意点

  • 拡張対象のインターフェースに定義されているメソッドには @Override アノテーションを付与してます。 ただし、インターフェースのメソッドに @Override を付与すると実際にはコンパイルエラーになります。

ConcurrentMap インターフェース

package java.util.concurrent;
public interface ConcurrentMap<K,V> extends Map<K,V>{
    @Override int size();
    @Override boolean isEmpty();
    @Override boolean containsKey(Object key);
    @Override boolean containsValue(Object value);

    // ********** エントリーなどの取得 **********
    @Override V get(Object key);
    @Override Collection<V> values();
    @Override Set<K> keySet();
    @Override Set<Map.Entry<K,V>> entrySet();

    // ********** エントリーの追加 **********
    @Override V put(K key, V value);
     V putIfAbsent(K key, V value);
    @Override void putAll(Map<? extends K, ? extends V> m);
     V replace(K key, V value);
     boolean replace(K key, V oldValue, V newValue);

    // ********** エントリーの削除 **********
    @Override V remove(Object key);
    boolean remove(Object key, Object value);
    @Override void clear();
}

ConcurrentNavigableMap インターフェース

package java.util.concurrent;
public interface ConcurrentNavigableMap<K,V> extends ConcurrentMap<K,V>, NavigableMap<K,V>{
    @Override int size();
    @Override boolean isEmpty();
    @Override boolean containsKey(Object key);
    @Override boolean containsValue(Object value);
    @Override Comparator<? super K> comparator();

    // ********** エントリーなどの取得 **********
    @Override V get(Object key);
    @Override Collection<V> values();

    @Override K firstKey();
    @Override K lowerKey(K key);
    @Override K floorKey(K key);
    @Override K ceilingKey(K key);
    @Override K higherKey(K key);
    @Override K lastKey();
    /** 返り値をサブタイプに再定義 */
    @Override NavigableSet<K> keySet();
    @Override NavigableSet<K> navigableKeySet();
    @Override NavigableSet<K> descendingKeySet();

    @Override Map.Entry<K,V> firstEntry();
    @Override Map.Entry<K,V> lowerEntry(K key);
    @Override Map.Entry<K,V> floorEntry(K key);
    @Override Map.Entry<K,V> ceilingEntry(K key);
    @Override Map.Entry<K,V> higherEntry(K key);
    @Override Map.Entry<K,V> lastEntry();
    @Override Map.Entry<K,V> pollFirstEntry();
    @Override Map.Entry<K,V> pollLastEntry();
    @Override Set<Map.Entry<K,V>> entrySet();

    /** 返り値をサブタイプに再定義 */
    @Override ConcurrentNavigableMap<K,V> descendingMap();
    /** 返り値をサブタイプに再定義 */
    @Override ConcurrentNavigableMap<K,V> headMap(K toKey);
    /** 返り値をサブタイプに再定義 */
    @Override ConcurrentNavigableMap<K,V> headMap(K toKey, boolean inclusive);
    /** 返り値をサブタイプに再定義 */
    @Override ConcurrentNavigableMap<K,V> subMap(K fromKey, K toKey);
    /** 返り値をサブタイプに再定義 */
    @Override ConcurrentNavigableMap<K,V> subMap(K fromKey, boolean fromInclusive, K toKey, boolean toInclusive);
    /** 返り値をサブタイプに再定義 */
    @Override ConcurrentNavigableMap<K,V> tailMap(K fromKey);
    /** 返り値をサブタイプに再定義 */
    @Override ConcurrentNavigableMap<K,V> tailMap(K fromKey, boolean inclusive);

    // ********** エントリーの追加 **********
    @Override V put(K key, V value);
    @Override V putIfAbsent(K key, V value);
    @Override void putAll(Map<? extends K,? extends V> m);
    @Override V replace(K key, V value);
    @Override boolean replace(K key, V oldValue, V newValue);

    // ********** エントリーの削除 **********
    @Override V remove(Object key);
    @Overrideboolean remove(Object key, Object value);
    @Override void clear();
}