This documentation differs from the official API. Jadeite adds extra features to the API including: variable font sizes, constructions examples, placeholders for classes and methods, and auto-generated “See Also” links. Additionally it is missing some items found in standard Javadoc documentation, including: generics type information, “Deprecated” tags and comments, “See Also” links, along with other minor differences. Please send any questions or feedback to bam@cs.cmu.edu.


java.util.concurrent
class ConcurrentSkipListMap

java.lang.Object extended by java.util.AbstractMap extended by java.util.concurrent.ConcurrentSkipListMap
All Implemented Interfaces:
Serializable, Cloneable, Map, ConcurrentNavigableMap

Most common way to construct:

ConcurrentSkipListMap empty = new ConcurrentSkipListMap();

Based on 77 examples


public class ConcurrentSkipListMap
extends AbstractMap
implements ConcurrentNavigableMap, Cloneable, Serializable

A scalable concurrent {@link ConcurrentNavigableMap} implementation. The map is sorted according to the {@linkplain Comparable natural ordering} of its keys, or by a {@link Comparator} provided at map creation time, depending on which constructor is used.

This class implements a concurrent variant of SkipLists providing expected average log(n) time cost for the containsKey, get, put and remove operations and their variants. Insertion, removal, update, and access operations safely execute concurrently by multiple threads. Iterators are weakly consistent, returning elements reflecting the state of the map at some point at or since the creation of the iterator. They do not throw {@link ConcurrentModificationException}, and may proceed concurrently with other operations. Ascending key ordered views and their iterators are faster than descending ones.

All Map.Entry pairs returned by methods in this class and its views represent snapshots of mappings at the time they were produced. They do not support the Entry.setValue method. (Note however that it is possible to change mappings in the associated map using put, putIfAbsent, or replace, depending on exactly which effect you need.)

Beware that, unlike in most collections, the size method is not a constant-time operation. Because of the asynchronous nature of these maps, determining the current number of elements requires a traversal of the elements. Additionally, the bulk operations putAll, equals, and clear are not guaranteed to be performed atomically. For example, an iterator operating concurrently with a putAll operation might view only some of the added elements.

This class and its views and iterators implement all of the optional methods of the {@link Map} and {@link Iterator} interfaces. Like most other concurrent collections, this class does not permit the use of null keys or values because some null return values cannot be reliably distinguished from the absence of elements.

This class is a member of the Java Collections Framework.


Nested Class Summary
 
Nested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry, AbstractMap.SimpleImmutableEntry
   
Constructor Summary

          Constructs a new, empty map, sorted according to the java.lang.Comparable of the keys.

          Constructs a new, empty map, sorted according to the specified comparator.

          Constructs a new map containing the same mappings as the given map, sorted according to the java.lang.Comparable of the keys.

          Constructs a new map containing the same mappings and using the same ordering as the specified sorted map.
 
Method Summary
 Map.Entry

          Returns a key-value mapping associated with the least key greater than or equal to the given key, or null if there is no such entry.
 Object

          
 void

          Removes all of the mappings from this map.
 ConcurrentSkipListMap

          Returns a shallow copy of this ConcurrentSkipListMap instance.
 Comparator

          
 boolean

          Returns true if this map contains a mapping for the specified key.
 boolean

          Returns true if this map maps one or more keys to the specified value.
 NavigableSet

          
 ConcurrentNavigableMap

          
 Set

          Returns a java.util.Set view of the mappings contained in this map.
 boolean

          Compares the specified object with this map for equality.
 Map.Entry

          Returns a key-value mapping associated with the least key in this map, or null if the map is empty.
 Object

          
 Map.Entry

          Returns a key-value mapping associated with the greatest key less than or equal to the given key, or null if there is no such key.
 Object

          
 Object
get(Object key)

          Returns the value to which the specified key is mapped, or if this map contains no mapping for the key.
 ConcurrentNavigableMap
headMap(Object toKey)

          
 ConcurrentNavigableMap
headMap(Object toKey, boolean inclusive)

          
 Map.Entry

          Returns a key-value mapping associated with the least key strictly greater than the given key, or null if there is no such key.
 Object

          
 boolean

          Returns true if this map contains no key-value mappings.
 NavigableSet

          Returns a java.util.NavigableSet view of the keys contained in this map.
 Map.Entry

          Returns a key-value mapping associated with the greatest key in this map, or null if the map is empty.
 Object

          
 Map.Entry

          Returns a key-value mapping associated with the greatest key strictly less than the given key, or null if there is no such key.
 Object

          
 NavigableSet

          
 Map.Entry

          Removes and returns a key-value mapping associated with the least key in this map, or null if the map is empty.
 Map.Entry

          Removes and returns a key-value mapping associated with the greatest key in this map, or null if the map is empty.
 Object
put(Object key, Object value)

          Associates the specified value with the specified key in this map.
 Object
putIfAbsent(Object key, Object value)

          
 Object

          Removes the mapping for the specified key from this map if present.
 boolean
remove(Object key, Object value)

          
 Object
replace(Object key, Object value)

          
 boolean
replace(Object key, Object oldValue, Object newValue)

          
 int

          Returns the number of key-value mappings in this map.
 ConcurrentNavigableMap
subMap(Object fromKey, boolean fromInclusive, Object toKey, boolean toInclusive)

          
 ConcurrentNavigableMap
subMap(Object fromKey, Object toKey)

          
 ConcurrentNavigableMap
tailMap(Object fromKey)

          
 ConcurrentNavigableMap
tailMap(Object fromKey, boolean inclusive)

          
 Collection

          Returns a java.util.Collection view of the values contained in this map.
 
Methods inherited from class java.util.AbstractMap
clear, clone, containsKey, containsValue, entrySet, equals, get, hashCode, isEmpty, keySet, put, putAll, remove, size, toString, values
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

ConcurrentSkipListMap

public ConcurrentSkipListMap()
Constructs a new, empty map, sorted according to the {@linkplain Comparable natural ordering} of the keys.


ConcurrentSkipListMap

public ConcurrentSkipListMap(Comparator comparator)
Constructs a new, empty map, sorted according to the specified comparator.

Parameters:
comparator - the comparator that will be used to order this map. If null, the {@linkplain Comparable natural ordering} of the keys will be used.

ConcurrentSkipListMap

public ConcurrentSkipListMap(Map m)
Constructs a new map containing the same mappings as the given map, sorted according to the {@linkplain Comparable natural ordering} of the keys.

Parameters:
m - the map whose mappings are to be placed in this map

ConcurrentSkipListMap

public ConcurrentSkipListMap(SortedMap m)
Constructs a new map containing the same mappings and using the same ordering as the specified sorted map.

Parameters:
m - the sorted map whose mappings are to be placed in this map, and whose comparator is to be used to sort this map
Method Detail

ceilingEntry

public Map.Entry ceilingEntry(Object key)
Returns a key-value mapping associated with the least key greater than or equal to the given key, or null if there is no such entry. The returned entry does not support the Entry.setValue method.

Parameters:
key

ceilingKey

public Object ceilingKey(Object key)
Parameters:
key

clear

public void clear()
Removes all of the mappings from this map.

Overrides:
clear in class AbstractMap

clone

public ConcurrentSkipListMap clone()
Returns a shallow copy of this ConcurrentSkipListMap instance. (The keys and values themselves are not cloned.)

Overrides:
clone in class AbstractMap
Returns:
a shallow copy of this map

comparator

public Comparator comparator()

containsKey

public boolean containsKey(Object key)
Returns true if this map contains a mapping for the specified key.

Overrides:
containsKey in class AbstractMap
Parameters:
key - key whose presence in this map is to be tested
Returns:
true if this map contains a mapping for the specified key

containsValue

public boolean containsValue(Object value)
Returns true if this map maps one or more keys to the specified value. This operation requires time linear in the map size.

Overrides:
containsValue in class AbstractMap
Parameters:
value - value whose presence in this map is to be tested
Returns:
true if a mapping to value exists; false otherwise

descendingKeySet

public NavigableSet descendingKeySet()

descendingMap

public ConcurrentNavigableMap descendingMap()

entrySet

public Set entrySet()
Returns a {@link Set} view of the mappings contained in this map. The set's iterator returns the entries in ascending key order. The set is backed by the map, so changes to the map are reflected in the set, and vice-versa. The set supports element removal, which removes the corresponding mapping from the map, via the Iterator.remove, Set.remove, removeAll, retainAll and clear operations. It does not support the add or addAll operations.

The view's iterator is a "weakly consistent" iterator that will never throw {@link ConcurrentModificationException}, and guarantees to traverse elements as they existed upon construction of the iterator, and may (but is not guaranteed to) reflect any modifications subsequent to construction.

The Map.Entry elements returned by iterator.next() do not support the setValue operation.

Overrides:
entrySet in class AbstractMap
Returns:
a set view of the mappings contained in this map, sorted in ascending key order

equals

public boolean equals(Object o)
Compares the specified object with this map for equality. Returns true if the given object is also a map and the two maps represent the same mappings. More formally, two maps m1 and m2 represent the same mappings if m1.entrySet().equals(m2.entrySet()). This operation may return misleading results if either map is concurrently modified during execution of this method.

Overrides:
equals in class AbstractMap
Parameters:
o - object to be compared for equality with this map
Returns:
true if the specified object is equal to this map

firstEntry

public Map.Entry firstEntry()
Returns a key-value mapping associated with the least key in this map, or null if the map is empty. The returned entry does not support the Entry.setValue method.


firstKey

public Object firstKey()

floorEntry

public Map.Entry floorEntry(Object key)
Returns a key-value mapping associated with the greatest key less than or equal to the given key, or null if there is no such key. The returned entry does not support the Entry.setValue method.

Parameters:
key - the key

floorKey

public Object floorKey(Object key)
Parameters:
key - the key

get

public Object get(Object key)
Returns the value to which the specified key is mapped, or {@code null} if this map contains no mapping for the key.

More formally, if this map contains a mapping from a key {@code k} to a value {@code v} such that {@code key} compares equal to {@code k} according to the map's ordering, then this method returns {@code v}; otherwise it returns {@code null}. (There can be at most one such mapping.)

Overrides:
get in class AbstractMap
Parameters:
key

headMap

public ConcurrentNavigableMap headMap(Object toKey)
Parameters:
toKey

headMap

public ConcurrentNavigableMap headMap(Object toKey,
                                      boolean inclusive)
Parameters:
toKey
inclusive

higherEntry

public Map.Entry higherEntry(Object key)
Returns a key-value mapping associated with the least key strictly greater than the given key, or null if there is no such key. The returned entry does not support the Entry.setValue method.

Parameters:
key - the key

higherKey

public Object higherKey(Object key)
Parameters:
key - the key

isEmpty

public boolean isEmpty()
Returns true if this map contains no key-value mappings.

Overrides:
isEmpty in class AbstractMap
Returns:
true if this map contains no key-value mappings

keySet

public NavigableSet keySet()
Returns a {@link NavigableSet} view of the keys contained in this map. The set's iterator returns the keys in ascending order. The set is backed by the map, so changes to the map are reflected in the set, and vice-versa. The set supports element removal, which removes the corresponding mapping from the map, via the {@code Iterator.remove}, {@code Set.remove}, {@code removeAll}, {@code retainAll}, and {@code clear} operations. It does not support the {@code add} or {@code addAll} operations.

The view's {@code iterator} is a "weakly consistent" iterator that will never throw {@link ConcurrentModificationException}, and guarantees to traverse elements as they existed upon construction of the iterator, and may (but is not guaranteed to) reflect any modifications subsequent to construction.

This method is equivalent to method {@code navigableKeySet}.

Overrides:
keySet in class AbstractMap
Returns:
a navigable set view of the keys in this map

lastEntry

public Map.Entry lastEntry()
Returns a key-value mapping associated with the greatest key in this map, or null if the map is empty. The returned entry does not support the Entry.setValue method.


lastKey

public Object lastKey()

lowerEntry

public Map.Entry lowerEntry(Object key)
Returns a key-value mapping associated with the greatest key strictly less than the given key, or null if there is no such key. The returned entry does not support the Entry.setValue method.

Parameters:
key

lowerKey

public Object lowerKey(Object key)
Parameters:
key

navigableKeySet

public NavigableSet navigableKeySet()

pollFirstEntry

public Map.Entry pollFirstEntry()
Removes and returns a key-value mapping associated with the least key in this map, or null if the map is empty. The returned entry does not support the Entry.setValue method.


pollLastEntry

public Map.Entry pollLastEntry()
Removes and returns a key-value mapping associated with the greatest key in this map, or null if the map is empty. The returned entry does not support the Entry.setValue method.


put

public Object put(Object key,
                  Object value)
Associates the specified value with the specified key in this map. If the map previously contained a mapping for the key, the old value is replaced.

Overrides:
put in class AbstractMap
Parameters:
key - key with which the specified value is to be associated
value - value to be associated with the specified key
Returns:
the previous value associated with the specified key, or null if there was no mapping for the key

putIfAbsent

public Object putIfAbsent(Object key,
                          Object value)
{@inheritDoc}

Parameters:
key
value
Returns:
the previous value associated with the specified key, or null if there was no mapping for the key

remove

public Object remove(Object key)
Removes the mapping for the specified key from this map if present.

Overrides:
remove in class AbstractMap
Parameters:
key - key for which mapping should be removed
Returns:
the previous value associated with the specified key, or null if there was no mapping for the key

remove

public boolean remove(Object key,
                      Object value)
{@inheritDoc}

Parameters:
key
value

replace

public Object replace(Object key,
                      Object value)
{@inheritDoc}

Parameters:
key
value
Returns:
the previous value associated with the specified key, or null if there was no mapping for the key

replace

public boolean replace(Object key,
                       Object oldValue,
                       Object newValue)
{@inheritDoc}

Parameters:
key
oldValue
newValue

size

public int size()
Returns the number of key-value mappings in this map. If this map contains more than Integer.MAX_VALUE elements, it returns Integer.MAX_VALUE.

Beware that, unlike in most collections, this method is NOT a constant-time operation. Because of the asynchronous nature of these maps, determining the current number of elements requires traversing them all to count them. Additionally, it is possible for the size to change during execution of this method, in which case the returned result will be inaccurate. Thus, this method is typically not very useful in concurrent applications.

Overrides:
size in class AbstractMap
Returns:
the number of elements in this map

subMap

public ConcurrentNavigableMap subMap(Object fromKey,
                                     boolean fromInclusive,
                                     Object toKey,
                                     boolean toInclusive)
Parameters:
fromKey
fromInclusive
toKey
toInclusive

subMap

public ConcurrentNavigableMap subMap(Object fromKey,
                                     Object toKey)
Parameters:
fromKey
toKey

tailMap

public ConcurrentNavigableMap tailMap(Object fromKey)
Parameters:
fromKey

tailMap

public ConcurrentNavigableMap tailMap(Object fromKey,
                                      boolean inclusive)
Parameters:
fromKey
inclusive

values

public Collection values()
Returns a {@link Collection} view of the values contained in this map. The collection's iterator returns the values in ascending order of the corresponding keys. The collection is backed by the map, so changes to the map are reflected in the collection, and vice-versa. The collection supports element removal, which removes the corresponding mapping from the map, via the Iterator.remove, Collection.remove, removeAll, retainAll and clear operations. It does not support the add or addAll operations.

The view's iterator is a "weakly consistent" iterator that will never throw {@link ConcurrentModificationException}, and guarantees to traverse elements as they existed upon construction of the iterator, and may (but is not guaranteed to) reflect any modifications subsequent to construction.

Overrides:
values in class AbstractMap


This documentation differs from the official API. Jadeite adds extra features to the API including: variable font sizes, constructions examples, placeholders for classes and methods, and auto-generated “See Also” links. Additionally it is missing some items found in standard Javadoc documentation, including: generics type information, “Deprecated” tags and comments, “See Also” links, along with other minor differences. Please send any questions or feedback to bam@cs.cmu.edu.
This page displays the Jadeite version of the documention, which is derived from the offical documentation that contains this copyright notice:
Copyright 2008 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.
The official Sun™ documentation can be found here at http://java.sun.com/javase/6/docs/api/.