NB5 Docs► Reference Section► Binding Functions▼ collection functions 🖺

Collection functions allow you to construct Java Lists, Maps or Sets. These functions often take the form of a higher-order function, where the inner function definitions are called to determine the size of the collection, the individual values to be added, etc.

For each type of collection, there exists multiple forms which allow you to control how the provided function arguments are used to set the values into the collection.

Sized or Pair-wise functions

Any function in this category with Sized occuring in its name must be initialized with a sizing function as an argument. For example, ListSized(Mod(5),NumberNameToString()) will create a list which is sized by the first function -- a list between 0 and 4 elements in this case. With an input value of 3L, the resulting List will contain 3 elements. With an input of 7L, it will contain 2 elements.

Alternately, when a function does not contain Sized in its name, the arguments provided are used as pair-wise mapping functions to the elements in the resulting collection.

Simply put, a Sized function will always require a sizing function as the first argument.

Stepped or Hashed or Same

Any function in this category which contains Stepped in its name will automatically increment the input value used for each element in the collection. For example ListStepped(NumberNameToString(),NumberNameToString()) will always creat a two-element List, but the inputs to the provided functions will be i+0, i+1, where i is the input value to the ListStepped function.

Alternately, any function in this category which contains Hashed in its name will automatically hash the input value used for each element. This is useful when you want to create values within a collection that vary significantly with respect of their common seed value. For example, ListHashed(NumberNameToString(),NumberNameToString(),NumberNameToString()) will always provide a three element List with values that are not obviously related to each other. For each additional element added to the collection, the previous input is hashed, so there is a relationship, but it will not be obvious nor discernable for most testing purposes.

If neither Stepped nor Hashed occurs in the function name, then every element function gets the exact value given to the main function.

Overview of functions

All of the useful collection binding functions follow the same basic patterns above.

List Functions**

Same InputStepped InputHashed Input
Pair-wiseListFunctions(...)ListStepped(...)ListHashed(...)
SizedListSized(...)ListSizedStepped(...)ListSizedHashed(...)

The name ListFunctions(...) was chosen to avoid clashing with the existing List(...) function.

Set Functions

The values produced by the provided element functions for Sets do not check for duplicate values. This means that you must ensure that your element functions yield distinct values to insert into the collection as it is being built if you want to have a particular cardinality of values in your collection. Overwrites are allowed, although they may not be intended in most cases.

Same InputStepped InputHashed Input
Pair-wiseSetFunctions(...)SetStepped(...)SetHashed(...)
SizedSetSized(...)SetSizedStepped(...)SetSizedHashed(...)

The name SetFunctions(...) was chosen to avoid clashing with the existing Set(...) function.

Map Functions

The values produced by the provided element functions for Maps do not check for duplicate values. This means that you must ensure that your element functions yield distinct keys to insert into the collection as it is being built if you want to have a particular cardinality of values in your collection. Overwrites are allowed, although they may not be intended in most cases.

Same InputStepped InputHashed Input
Pair-wiseMapFunctions(...)MapStepped(...)MapHashed(...)
SizedMapSized(...)MapSizedStepped(...)MapSizedHashed(...)

The name MapFunctions(...) was chosen to avoid clashing with the existing Map(...) function.

For the key and value functions provided to a Map function, they are taken as even-odd pairs (starting at zero). For sized functions, the last defined key function will be used for elements past the size of the key functions provided. The same is true for the value functions. For example, a call to MapSized(3,f(...),g(...),h(...)) will use f(...) and g(...) for the first key and value, but from that point forward will use h(...) for all keys and g(...) for all values.

HashedLineToStringList

Creates a List<String> from a list of words in a file.

HashedLineToStringSet

Return a pseudo-randomly created Set from the values in the specified file.

HashedLineToStringStringMap

Create a String-String map from the specified file, ranging in size from 0 to the specified maximum.

HashedRangeToLongList

Create a list of longs.

Join

This takes any collection and concatenates the String representation with a specified delimiter.

List

Create a {@code List} from a long input based on two functions, the first to determine the list size, and the second to populate the list with object values. The input fed to the second function is incremented between elements.

To directly create Lists of Strings from the String version of the same mapping functions, simply use {@link StringList} instead.

This function is not recommended, given that the other List functions are more clear about how they construct values. This function may be removed in the next major release, but it will be retained as deprecated for now.

ListFunctions

Create a List from a long input based on a set of provided functions. As a 'Pair-wise' function, the size of the resulting collection is determined directly by the number of provided element functions. As neither a 'Stepped' nor a 'Hashed' function, the input value used by each element function is the same as that provided to the outer function.

ListHashed

Create a List from a long input based on a set of provided functions. As a 'Pair-wise' function, the size of the resulting collection is determined directly by the number of provided element functions. As a 'Hashed' function, the input value is hashed again before being used by each element function.

ListSized

Create a List from a long input based on a set of provided functions. As a 'Sized' function, the first argument is a function which determines the size of the resulting list. Additional functions provided are used to generate the elements to add to the collection. If the size is larger than the number of provided functions, the last provided function is used repeatedly as needed. As neither a 'Stepped' nor a 'Hashed' function, the input value used by each element function is the same as that provided to the outer function.

ListSizedHashed

Create a List from a long input based on a set of provided functions. As a 'Sized' function, the first argument is a function which determines the size of the resulting list. Additional functions provided are used to generate the elements to add to the collection. If the size is larger than the number of provided functions, the last provided function is used repeatedly as needed. As a 'Hashed' function, the input value is hashed again before being used by each element function.

ListSizedStepped

Create a List from a long input based on a set of provided functions.

As a 'Sized' function, the first argument is a function which determines the size of the resulting list. Additional functions provided are used to generate the elements to add to the collection. If the size is larger than the number of provided functions, the last provided function is used repeatedly as needed.

As a 'Stepped' function, the input value is incremented before being used by each element function.

ListStepped

Create a List from a long input based on a set of provided functions. As a 'Pair-wise' function, the size of the resulting collection is determined directly by the number of provided element functions. As a 'Stepped' function, the input value is incremented before being used by each element function.

Map

Create a {@code Map} from a long input based on three functions, the first to determine the map size, and the second to populate the map with key objects, and the third to populate the map with value objects. The long input fed to the second and third functions is incremented between entries. To directly create Maps with key and value Strings using the same mapping functions, simply use {@link StringMap} instead.

MapFunctions

Create a Map from a long input based on a set of provided key and value functions. Any duplicate entries produced by the key functions are elided. As a 'Pair-wise' function, the size of the resulting collection is determined directly by the number of provided element functions. Since this is a map, the functions come in pairs, each even numbered function is a key function and each odd numbered function is the corresponding value function. As neither a 'Stepped' nor a 'Hashed' function, the input value used by each key and value function is the same as that provided to the outer function.

MapHashed

Create a Map from a long input based on a set of provided key and value functions. Any duplicate entries produced by the key functions are elided. As a 'Pair-wise' function, the size of the resulting collection is determined directly by the number of provided element functions. Since this is a map, the functions come in pairs, each even numbered function is a key function and each odd numbered function is the corresponding value function. As a 'Hashed' function, the input value is hashed again before being used by each key and value function.

MapSized

Create a Map from a long input based on a set of provided key and value functions. Any duplicate entries produced by the key functions are elided. As a 'Sized' function, the first argument is a function which determines the size of the resulting map. Additional functions provided are used to generate the elements to add to the collection, as in the pair-wise mode of {@link MapFunctions}. If the size is larger than the number of provided functions, the last provided function is used repeatedly as needed. (respectively for key functions as well as value functions) As neither a 'Stepped' nor a 'Hashed' function, the input value used by each key and value function is the same as that provided to the outer function.

MapSizedHashed

Create a Map from a long input based on a set of provided key and value functions. Any duplicate entries produced by the key functions are elided. As a 'Sized' function, the first argument is a function which determines the size of the resulting map. Additional functions provided are used to generate the elements to add to the collection, as in the pair-wise mode of {@link MapFunctions}. If the size is larger than the number of provided functions, the last provided function is used repeatedly as needed. (respectively for key functions as well as value functions) As a 'Hashed' function, the input value is hashed again before being used by each key and value function.

MapSizedStepped

Create a Map from a long input based on a set of provided key and value functions. Any duplicate entries produced by the key functions are elided. As a 'Sized' function, the first argument is a function which determines the size of the resulting map. Additional functions provided are used to generate the elements to add to the collection, as in the pair-wise mode of {@link MapFunctions}. If the size is larger than the number of provided functions, the last provided function is used repeatedly as needed. (respectively for key functions as well as value functions) As a 'Stepped' function, the input value is incremented before being used by each key or value function.

MapStepped

Create a Map from a long input based on a set of provided key and value functions. Any duplicate entries produced by the key functions are elided. As a 'Pair-wise' function, the size of the resulting collection is determined directly by the number of provided element functions. Since this is a map, the functions come in pairs, each even numbered function is a key function and each odd numbered function is the corresponding value function. As a 'Stepped' function, the input value is incremented before being used by each key or value function.

Set

Create a {@code Set} from a long input based on two functions, the first to determine the set size, and the second to populate the set with object values. The input fed to the second function is incremented between elements.

To create Sets of Strings from the String version of the same mapping functions, simply use {@link StringSet} instead.

SetFunctions

Create a Set from a long input based on a set of provided functions. Any duplicate values are elided. As a 'Pair-wise' function, the size of the resulting collection is determined directly by the number of provided element functions. As neither a 'Stepped' nor a 'Hashed' function, the input value used by each element function is the same as that provided to the outer function.

SetHashed

Create a Set from a long input based on a set of provided functions. As a 'Pair-wise' function, the size of the resulting collection is determined directly by the number of provided element functions, assuming no duplicate values. As a 'Hashed' function, the input value is hashed again before being used by each element function.

SetSized

Create a Set from a long input based on a set of provided functions. As a 'Sized' function, the first argument is a function which determines the size of the resulting set. Additional functions provided are used to generate the elements to add to the collection. If the size is larger than the number of provided functions, the last provided function is used repeatedly as needed. As neither a 'Stepped' nor a 'Hashed' function, the input value used by each element function is the same as that provided to the outer function.

SetSizedHashed

Create a Set from a long input based on a set of provided functions. As a 'Sized' function, the first argument is a function which determines the size of the resulting set. Additional functions provided are used to generate the elements to add to the collection. If the size is larger than the number of provided functions, the last provided function is used repeatedly as needed. As a 'Hashed' function, the input value is hashed again before being used by each element function.

SetSizedStepped

Create a Set from a long input based on a set of provided functions. As a 'Sized' function, the first argument is a function which determines the size of the resulting set. Additional functions provided are used to generate the elements to add to the collection. If the size is larger than the number of provided functions, the last provided function is used repeatedly as needed. As a 'Stepped' function, the input value is incremented before being used by each element function.

SetStepped

Create a Set from a long input based on a set of provided functions. As a 'Pair-wise' function, the size of the resulting collection is determined directly by the number of provided element functions, assuming no duplicate values. As a 'Stepped' function, the input value is incremented before being used by each element function.

StringList

Create a {@code List} from a long value, based on two functions, the first to determine the list size, and the second to populate the list with String values. The input fed to the second function is incremented between elements. Regardless of the object type provided by the second function, {@link Object#toString()} is used to get the value to add to the list.

To create Lists of any type of object simply use {@link List} with an specific value mapping function.

StringMap

Create a {@code Map} from a long input based on three functions, the first to determine the map size, and the second to populate the map with key objects, and the third to populate the map with value objects. The long input fed to the second and third functions is incremented between entries. Regardless of the object type provided by the second and third functions, {@link Object#toString()} is used to determine the key and value to add to the map. To create Maps of any key and value types, simply use {@link Map} with an specific key and value mapping functions.

StringSet

Create a {@code Set} from a long based on two functions, the first to determine the set size, and the second to populate the set with String values. The input fed to the second function is incremented between elements. Regardless of the object type provided by the second function, {@link Object#toString()} is used to get the value to add to the list. To create Sets of any type of object simply use {@link Set} with a specific value mapping function.

Back to top