org.springframework.core
Class CollectionFactory

java.lang.Object
  extended by org.springframework.core.CollectionFactory

public abstract class CollectionFactory
extends java.lang.Object

Factory for collections, being aware of Java 5 and Java 6 collections. Mainly for internal use within the framework.

The goal of this class is to avoid runtime dependencies on a specific Java version, while nevertheless using the best collection implementation that is available at runtime.

Since:
1.1.1
Author:
Juergen Hoeller, Arjen Poutsma

Nested Class Summary
private static class CollectionFactory.JdkConcurrentHashMap
          Deprecated. 
 
Field Summary
private static java.util.Set<java.lang.Class> approximableCollectionTypes
           
private static java.util.Set<java.lang.Class> approximableMapTypes
           
private static java.lang.Class navigableMapClass
           
private static java.lang.Class navigableSetClass
           
 
Constructor Summary
CollectionFactory()
           
 
Method Summary
static java.util.Collection createApproximateCollection(java.lang.Object collection, int initialCapacity)
          Create the most approximate collection for the given collection.
static java.util.Map createApproximateMap(java.lang.Object map, int initialCapacity)
          Create the most approximate map for the given map.
static java.util.Collection createCollection(java.lang.Class<?> collectionType, int initialCapacity)
          Create the most appropriate collection for the given collection type.
static ConcurrentMap createConcurrentMap(int initialCapacity)
          Deprecated. as of Spring 3.0, for usage on JDK 1.5 or higher
static java.util.Map createConcurrentMapIfPossible(int initialCapacity)
          Deprecated. as of Spring 3.0, for usage on JDK 1.5 or higher
static
<T> java.util.Set<T>
createCopyOnWriteSet()
          Deprecated. as of Spring 3.0, for usage on JDK 1.5 or higher
static java.util.Map createIdentityMapIfPossible(int initialCapacity)
          Deprecated. as of Spring 2.5, for usage on JDK 1.4 or higher
static java.util.Map createLinkedCaseInsensitiveMapIfPossible(int initialCapacity)
          Deprecated. as of Spring 3.0, for usage on JDK 1.5 or higher
static
<K,V> java.util.Map<K,V>
createLinkedMapIfPossible(int initialCapacity)
          Deprecated. as of Spring 2.5, for usage on JDK 1.4 or higher
static
<T> java.util.Set<T>
createLinkedSetIfPossible(int initialCapacity)
          Deprecated. as of Spring 2.5, for usage on JDK 1.4 or higher
static java.util.Map createMap(java.lang.Class<?> mapType, int initialCapacity)
          Create the most approximate map for the given map.
static boolean isApproximableCollectionType(java.lang.Class<?> collectionType)
          Determine whether the given collection type is an approximable type, i.e.
static boolean isApproximableMapType(java.lang.Class<?> mapType)
          Determine whether the given map type is an approximable type, i.e.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

navigableSetClass

private static java.lang.Class navigableSetClass

navigableMapClass

private static java.lang.Class navigableMapClass

approximableCollectionTypes

private static final java.util.Set<java.lang.Class> approximableCollectionTypes

approximableMapTypes

private static final java.util.Set<java.lang.Class> approximableMapTypes
Constructor Detail

CollectionFactory

public CollectionFactory()
Method Detail

createLinkedSetIfPossible

@Deprecated
public static <T> java.util.Set<T> createLinkedSetIfPossible(int initialCapacity)
Deprecated. as of Spring 2.5, for usage on JDK 1.4 or higher

Create a linked Set if possible: This implementation always creates a LinkedHashSet, since Spring 2.5 requires JDK 1.4 anyway.

Parameters:
initialCapacity - the initial capacity of the Set
Returns:
the new Set instance

createCopyOnWriteSet

@Deprecated
public static <T> java.util.Set<T> createCopyOnWriteSet()
Deprecated. as of Spring 3.0, for usage on JDK 1.5 or higher

Create a copy-on-write Set (allowing for synchronization-less iteration) if possible: This implementation always creates a CopyOnWriteArraySet, since Spring 3 requires JDK 1.5 anyway.

Returns:
the new Set instance

createLinkedMapIfPossible

@Deprecated
public static <K,V> java.util.Map<K,V> createLinkedMapIfPossible(int initialCapacity)
Deprecated. as of Spring 2.5, for usage on JDK 1.4 or higher

Create a linked Map if possible: This implementation always creates a LinkedHashMap, since Spring 2.5 requires JDK 1.4 anyway.

Parameters:
initialCapacity - the initial capacity of the Map
Returns:
the new Map instance

createLinkedCaseInsensitiveMapIfPossible

@Deprecated
public static java.util.Map createLinkedCaseInsensitiveMapIfPossible(int initialCapacity)
Deprecated. as of Spring 3.0, for usage on JDK 1.5 or higher

Create a linked case-insensitive Map if possible: This implementation always returns a LinkedCaseInsensitiveMap.

Parameters:
initialCapacity - the initial capacity of the Map
Returns:
the new Map instance

createIdentityMapIfPossible

@Deprecated
public static java.util.Map createIdentityMapIfPossible(int initialCapacity)
Deprecated. as of Spring 2.5, for usage on JDK 1.4 or higher

Create an identity Map if possible: This implementation always creates a IdentityHashMap, since Spring 2.5 requires JDK 1.4 anyway.

Parameters:
initialCapacity - the initial capacity of the Map
Returns:
the new Map instance

createConcurrentMapIfPossible

@Deprecated
public static java.util.Map createConcurrentMapIfPossible(int initialCapacity)
Deprecated. as of Spring 3.0, for usage on JDK 1.5 or higher

Create a concurrent Map if possible: This implementation always creates a ConcurrentHashMap, since Spring 3.0 requires JDK 1.5 anyway.

Parameters:
initialCapacity - the initial capacity of the Map
Returns:
the new Map instance

createConcurrentMap

@Deprecated
public static ConcurrentMap createConcurrentMap(int initialCapacity)
Deprecated. as of Spring 3.0, for usage on JDK 1.5 or higher

Create a concurrent Map with a dedicated ConcurrentMap interface: This implementation always creates a ConcurrentHashMap, since Spring 3.0 requires JDK 1.5 anyway.

Parameters:
initialCapacity - the initial capacity of the Map
Returns:
the new ConcurrentMap instance

isApproximableCollectionType

public static boolean isApproximableCollectionType(java.lang.Class<?> collectionType)
Determine whether the given collection type is an approximable type, i.e. a type that createApproximateCollection(java.lang.Object, int) can approximate.

Parameters:
collectionType - the collection type to check
Returns:
true if the type is approximable, false if it is not

createApproximateCollection

public static java.util.Collection createApproximateCollection(java.lang.Object collection,
                                                               int initialCapacity)
Create the most approximate collection for the given collection.

Creates an ArrayList, TreeSet or linked Set for a List, SortedSet or Set, respectively.

Parameters:
collection - the original Collection object
initialCapacity - the initial capacity
Returns:
the new Collection instance
See Also:
ArrayList, TreeSet, LinkedHashSet

createCollection

public static java.util.Collection createCollection(java.lang.Class<?> collectionType,
                                                    int initialCapacity)
Create the most appropriate collection for the given collection type.

Creates an ArrayList, TreeSet or linked Set for a List, SortedSet or Set, respectively.

Parameters:
collectionType - the desired type of the target Collection
initialCapacity - the initial capacity
Returns:
the new Collection instance
See Also:
ArrayList, TreeSet, LinkedHashSet

isApproximableMapType

public static boolean isApproximableMapType(java.lang.Class<?> mapType)
Determine whether the given map type is an approximable type, i.e. a type that createApproximateMap(java.lang.Object, int) can approximate.

Parameters:
mapType - the map type to check
Returns:
true if the type is approximable, false if it is not

createApproximateMap

public static java.util.Map createApproximateMap(java.lang.Object map,
                                                 int initialCapacity)
Create the most approximate map for the given map.

Creates a TreeMap or linked Map for a SortedMap or Map, respectively.

Parameters:
map - the original Map object
initialCapacity - the initial capacity
Returns:
the new Map instance
See Also:
TreeMap, LinkedHashMap

createMap

public static java.util.Map createMap(java.lang.Class<?> mapType,
                                      int initialCapacity)
Create the most approximate map for the given map.

Creates a TreeMap or linked Map for a SortedMap or Map, respectively.

Parameters:
collectionType - the desired type of the target Map
initialCapacity - the initial capacity
Returns:
the new Map instance
See Also:
TreeMap, LinkedHashMap