Interface CollectionGeneratorSpec<T>

Type Parameters:
T - element type
All Superinterfaces:
GeneratorSpec<Collection<T>>, NullableGeneratorSpec<Collection<T>>, SubtypeGeneratorSpec<Collection<T>>
All Known Implementing Classes:
CollectionGenerator, CollectionGeneratorSpecImpl

public interface CollectionGeneratorSpec<T> extends NullableGeneratorSpec<Collection<T>>, SubtypeGeneratorSpec<Collection<T>>
Generator spec for collections.
  • Method Details

    • size

      CollectionGeneratorSpec<T> size(int size)
      Size of collection to generate.
      Parameters:
      size - of collection
      Returns:
      spec builder
    • minSize

      CollectionGeneratorSpec<T> minSize(int size)
      Minimum size of collection to generate.
      Parameters:
      size - minimum size (inclusive)
      Returns:
      spec builder
    • maxSize

      CollectionGeneratorSpec<T> maxSize(int size)
      Maximum size of collection to generate.
      Parameters:
      size - maximum size (inclusive)
      Returns:
      spec builder
    • nullable

      Indicates that null value can be generated for the collection.
      Specified by:
      nullable in interface NullableGeneratorSpec<T>
      Returns:
      spec builder
    • nullableElements

      CollectionGeneratorSpec<T> nullableElements()
      Indicates that null values can be generated for collection elements.
      Returns:
      spec builder
    • subtype

      CollectionGeneratorSpec<T> subtype(Class<?> type)
      Specifies the type of collection that should be generated.
      Specified by:
      subtype in interface SubtypeGeneratorSpec<T>
      Parameters:
      type - of collection to generate
      Returns:
      spec builder
      Since:
      1.4.0
    • unique

      Specifies that a collection containing unique elements should be generated.

      Special care must be taken when using this method and size(int). Consider the following example where the favourite numbers field is of type Set<Integer>:

      
         Person person = Instancio.of(Person.class)
             .generate(allInts(), gen -> gen.ints().range(1, 5))
             .generate(field(Person::getFavouriteNumbers), gen -> gen.collection().unique().size(10))
             .create();
       

      Since the integer range is restricted to 1..5, it is impossible to generate a collection of 10 unique elements. In this case, a collection of size 5 will be generated.

      Returns:
      spec builder
      Since:
      2.8.0
    • with

      CollectionGeneratorSpec<T> with(T... elements)
      Adds given elements to the generated collection at random positions. Note that the elements are added after the collection has been generated.

      Example:

      
        // will generate a collection of size 5
        generate(field("someList"), gen -> gen.collection().size(3).with("element1", "element2")
       
      Parameters:
      elements - to add
      Returns:
      spec builder