Class CollectionFactory


  • public final class CollectionFactory
    extends Object
    Factory for collections that is aware of common Java and Spring collection types.

    Mainly for internal use within the framework.

    Since:
    1.1.1
    Author:
    Juergen Hoeller, Arjen Poutsma, Oliver Gierke, Sam Brannen
    • Method Detail

      • createApproximateCollection

        public static <E> Collection<E> createApproximateCollection​(@Nullable
                                                                    Object collection,
                                                                    int capacity)
        Create the most approximate collection for the given collection.

        Warning: Since the parameterized type E is not bound to the type of elements contained in the supplied collection, type safety cannot be guaranteed if the supplied collection is an EnumSet. In such scenarios, the caller is responsible for ensuring that the element type for the supplied collection is an enum type matching type E. As an alternative, the caller may wish to treat the return value as a raw collection or collection of Object.

        Parameters:
        collection - the original collection object, potentially null
        capacity - the initial capacity
        Returns:
        a new, empty collection instance
        See Also:
        isApproximableCollectionType(java.lang.Class<?>), LinkedList, ArrayList, EnumSet, TreeSet, LinkedHashSet
      • createCollection

        public static <E> Collection<E> createCollection​(Class<?> collectionType,
                                                         int capacity)
        Create the most appropriate collection for the given collection type.

        Delegates to createCollection(Class, Class, int) with a null element type.

        Parameters:
        collectionType - the desired type of the target collection (never null)
        capacity - the initial capacity
        Returns:
        a new collection instance
        Throws:
        IllegalArgumentException - if the supplied collectionType is null or of type EnumSet
      • createCollection

        public static <E> Collection<E> createCollection​(Class<?> collectionType,
                                                         @Nullable
                                                         Class<?> elementType,
                                                         int capacity)
        Create the most appropriate collection for the given collection type.

        Warning: Since the parameterized type E is not bound to the supplied elementType, type safety cannot be guaranteed if the desired collectionType is EnumSet. In such scenarios, the caller is responsible for ensuring that the supplied elementType is an enum type matching type E. As an alternative, the caller may wish to treat the return value as a raw collection or collection of Object.

        Parameters:
        collectionType - the desired type of the target collection (never null)
        elementType - the collection's element type, or null if unknown (note: only relevant for EnumSet creation)
        capacity - the initial capacity
        Returns:
        a new collection instance
        Throws:
        IllegalArgumentException - if the supplied collectionType is null; or if the desired collectionType is EnumSet and the supplied elementType is not a subtype of Enum
        Since:
        4.1.3
        See Also:
        LinkedHashSet, ArrayList, TreeSet, EnumSet
      • createApproximateMap

        public static <K,​V> Map<K,​V> createApproximateMap​(@Nullable
                                                                      Object map,
                                                                      int capacity)
        Create the most approximate map for the given map.

        Warning: Since the parameterized type K is not bound to the type of keys contained in the supplied map, type safety cannot be guaranteed if the supplied map is an EnumMap. In such scenarios, the caller is responsible for ensuring that the key type in the supplied map is an enum type matching type K. As an alternative, the caller may wish to treat the return value as a raw map or map keyed by Object.

        Parameters:
        map - the original map object, potentially null
        capacity - the initial capacity
        Returns:
        a new, empty map instance
        See Also:
        isApproximableMapType(java.lang.Class<?>), EnumMap, TreeMap, LinkedHashMap
      • createMap

        public static <K,​V> Map<K,​V> createMap​(Class<?> mapType,
                                                           int capacity)
        Create the most appropriate map for the given map type.

        Delegates to createMap(Class, Class, int) with a null key type.

        Parameters:
        mapType - the desired type of the target map
        capacity - the initial capacity
        Returns:
        a new map instance
        Throws:
        IllegalArgumentException - if the supplied mapType is null or of type EnumMap
      • createMap

        public static <K,​V> Map<K,​V> createMap​(Class<?> mapType,
                                                           @Nullable
                                                           Class<?> keyType,
                                                           int capacity)
        Create the most appropriate map for the given map type.

        Warning: Since the parameterized type K is not bound to the supplied keyType, type safety cannot be guaranteed if the desired mapType is EnumMap. In such scenarios, the caller is responsible for ensuring that the keyType is an enum type matching type K. As an alternative, the caller may wish to treat the return value as a raw map or map keyed by Object. Similarly, type safety cannot be enforced if the desired mapType is MultiValueMap.

        Parameters:
        mapType - the desired type of the target map (never null)
        keyType - the map's key type, or null if unknown (note: only relevant for EnumMap creation)
        capacity - the initial capacity
        Returns:
        a new map instance
        Throws:
        IllegalArgumentException - if the supplied mapType is null; or if the desired mapType is EnumMap and the supplied keyType is not a subtype of Enum
        Since:
        4.1.3
        See Also:
        LinkedHashMap, TreeMap, LinkedMultiValueMap, EnumMap
      • createSortedProperties

        public static Properties createSortedProperties​(boolean omitComments)
        Create a variant of Properties that sorts properties alphanumerically based on their keys.

        This can be useful when storing the Properties instance in a properties file, since it allows such files to be generated in a repeatable manner with consistent ordering of properties. Comments in generated properties files can also be optionally omitted.

        Parameters:
        omitComments - true if comments should be omitted when storing properties in a file
        Returns:
        a new Properties instance
        Since:
        5.2
        See Also:
        createStringAdaptingProperties(), createSortedProperties(Properties, boolean)
      • createSortedProperties

        public static Properties createSortedProperties​(Properties properties,
                                                        boolean omitComments)
        Create a variant of Properties that sorts properties alphanumerically based on their keys.

        This can be useful when storing the Properties instance in a properties file, since it allows such files to be generated in a repeatable manner with consistent ordering of properties. Comments in generated properties files can also be optionally omitted.

        The returned Properties instance will be populated with properties from the supplied properties object, but default properties from the supplied properties object will not be copied.

        Parameters:
        properties - the Properties object from which to copy the initial properties
        omitComments - true if comments should be omitted when storing properties in a file
        Returns:
        a new Properties instance
        Since:
        5.2
        See Also:
        createStringAdaptingProperties(), createSortedProperties(boolean)