|
Groovy JDK |
Method Summary | |
---|---|
boolean
|
addAll(int index, Object[] items)
Modifies this list by inserting all of the elements in the specified array into the list at the specified position. |
List
|
asImmutable()
A convenience method for creating an immutable list |
List
|
asSynchronized()
A convenience method for creating a synchronized List. |
List
|
collate(int size)
Collates this list into sub-lists of length size .
|
List
|
collate(int size, int step)
Collates this list into sub-lists of length size stepping through the code step
elements for each subList.
|
List
|
collate(int size, boolean keepRemainder)
Collates this list into sub-lists of length size .
|
List
|
collate(int size, int step, boolean keepRemainder)
Collates this list into sub-lists of length size stepping through the code step
elements for each sub-list.
|
List
|
drop(int num)
Drops the given number of elements from the head of this list if they are available. |
List
|
dropWhile(Closure condition)
Returns a suffix of this List where elements are dropped from the front while the given Closure evaluates to true. |
boolean
|
equals(Object[] right)
Determines if the contents of this list are equal to the contents of the given array in the same order. |
boolean
|
equals(List right)
Compare the contents of two Lists. |
Process
|
execute()
Executes the command specified by the given list. |
Process
|
execute(String[] envp, File dir)
Executes the command specified by the given list, with the environment defined by envp and under the working directory dir .
|
Process
|
execute(List envp, File dir)
Executes the command specified by the given list, with the environment defined by envp and under the working directory dir .
|
Object
|
first()
Returns the first item from the List. |
List
|
getAt(Range range)
Support the range subscript operator for a List. |
List
|
getAt(EmptyRange range)
Support the range subscript operator for a List. |
List
|
getAt(Collection indices)
Select a List of items from a List using a Collection to identify the indices to be selected. |
Object
|
getAt(int idx)
Support the subscript operator for a List. |
Object
|
head()
Returns the first item from the List. |
Object
|
last()
Returns the last item from the List. |
List
|
minus(Collection removeMe)
Create a List composed of the elements of the first list minus every occurrence of elements of the given Collection. |
List
|
minus(Iterable removeMe)
Create a List composed of the elements of the first list minus every occurrence of elements of the given Iterable. |
List
|
minus(Object removeMe)
Create a new List composed of the elements of the first list minus every occurrence of the given element to remove. |
Set
|
permutations()
Finds all permutations of a collection. |
List
|
plus(int index, Object[] items)
Creates a new List by inserting all of the elements in the specified array to the elements from the original List at the specified index. |
List
|
plus(int index, List additions)
Creates a new List by inserting all of the elements in the given additions List to the elements from the original List at the specified index. |
List
|
plus(int index, Iterable additions)
Creates a new List by inserting all of the elements in the given Iterable to the elements from this List at the specified index. |
Object
|
pop()
Removes the last item from the List. |
boolean
|
push(Object value)
Appends an item to the List. |
void
|
putAt(int idx, Object value)
A helper method to allow lists to work with subscript operators. |
void
|
putAt(EmptyRange range, Object value)
A helper method to allow lists to work with subscript operators. |
void
|
putAt(EmptyRange range, Collection value)
A helper method to allow lists to work with subscript operators. |
void
|
putAt(IntRange range, Collection col)
List subscript assignment operator when given a range as the index and the assignment operand is a collection. |
void
|
putAt(IntRange range, Object value)
List subscript assignment operator when given a range as the index. |
void
|
putAt(List splice, List values)
A helper method to allow lists to work with subscript operators. |
void
|
putAt(List splice, Object value)
A helper method to allow lists to work with subscript operators. |
List
|
reverse()
Creates a new List with the identical contents to this list but in reverse order. |
List
|
reverse(boolean mutate)
Reverses the elements in a list. |
List
|
reverseEach(Closure closure)
Iterate over each element of the list in the reverse order. |
Set
|
subsequences()
Finds all non-null subsequences of a list. |
List
|
tail()
Returns the items from the List excluding the first item. |
List
|
take(int num)
Returns the first num elements from the head of this list.
|
List
|
takeWhile(Closure condition)
Returns the longest prefix of this list where each element passed to the given closure condition evaluates to true. |
SpreadMap
|
toSpreadMap()
Creates a spreadable map from this list. |
List
|
transpose()
Adds GroovyCollections#transpose(List) as a method on lists. |
List
|
withDefault(Closure init)
An alias for withLazyDefault which decorates a list allowing
it to grow when called with index values outside the normal list bounds.
|
List
|
withEagerDefault(Closure init)
Decorates a list allowing it to grow when called with a non-existent index value. |
List
|
withLazyDefault(Closure init)
Decorates a list allowing it to grow when called with a non-existent index value. |
Method Detail |
---|
public boolean addAll(int index, Object[] items)
plus
for similar functionality with copy semantics, i.e. which produces a new
list after adding the additional items at the specified position but leaves the original list unchanged.items
- array containing elements to be added to this collection.index
- index at which to insert the first element from the
specified array.public List asImmutable()
public List asSynchronized()
public List collate(int size)
size
.
Example:
def list = [ 1, 2, 3, 4, 5, 6, 7 ] def coll = list.collate( 3 ) assert coll == [ [ 1, 2, 3 ], [ 4, 5, 6 ], [ 7 ] ]
size
- the length of each sub-list in the returned list.public List collate(int size, int step)
size
stepping through the code step
elements for each subList.
Example:
def list = [ 1, 2, 3, 4 ] def coll = list.collate( 3, 1 ) assert coll == [ [ 1, 2, 3 ], [ 2, 3, 4 ], [ 3, 4 ], [ 4 ] ]
size
- the length of each sub-list in the returned list.step
- the number of elements to step through for each sub-list.public List collate(int size, boolean keepRemainder)
size
. Any remaining elements in
the list after the subdivision will be dropped if keepRemainder
is false.
Example:
def list = [ 1, 2, 3, 4, 5, 6, 7 ] def coll = list.collate( 3, false ) assert coll == [ [ 1, 2, 3 ], [ 4, 5, 6 ] ]
size
- the length of each sub-list in the returned list.keepRemainder
- if true, any rmeaining elements are returned as sub-lists. Otherwise they are discarded.public List collate(int size, int step, boolean keepRemainder)
size
stepping through the code step
elements for each sub-list. Any remaining elements in the list after the subdivision will be dropped if
keepRemainder
is false.
Example:
def list = [ 1, 2, 3, 4 ] assert list.collate( 3, 1, true ) == [ [ 1, 2, 3 ], [ 2, 3, 4 ], [ 3, 4 ], [ 4 ] ] assert list.collate( 3, 1, false ) == [ [ 1, 2, 3 ], [ 2, 3, 4 ] ]
size
- the length of each sub-list in the returned list.step
- the number of elements to step through for each sub-list.keepRemainder
- if true, any rmeaining elements are returned as sub-lists. Otherwise they are discarded.public List drop(int num)
def strings = [ 'a', 'b', 'c' ] assert strings.drop( 0 ) == [ 'a', 'b', 'c' ] assert strings.drop( 2 ) == [ 'c' ] assert strings.drop( 5 ) == []Similar to Iterable#drop(int) except that it attempts to preserve the type of the original list.
num
- the number of elements to drop from this list.num
ones, or else the empty list, if this list has
less than num
elements.public List dropWhile(Closure condition)
def nums = [ 1, 3, 2 ] assert nums.dropWhile{ it < 4 } == [] assert nums.dropWhile{ it < 3 } == [ 3, 2 ] assert nums.dropWhile{ it != 2 } == [ 2 ] assert nums.dropWhile{ it == 0 } == [ 1, 3, 2 ]
condition
- the closure that must evaluate to true to continue dropping elements.public boolean equals(Object[] right)
false
if either collection is null
.
assert [1, "a"].equals( [ 1, "a" ] as Object[] )
right
- the Object[] being compared to.public boolean equals(List right)
null
, the result
is true; otherwise if either list is null
, the result
is false
.
assert ["a", 2].equals(["a", 2]) assert ![2, "a"].equals("a", 2) assert [2.0, "a"].equals(2L, "a") // number comparison at work
right
- the List being compared to.true
if the contents of both lists are identical,
false
otherwise.public Process execute()
For more control over Process construction you can use
java.lang.ProcessBuilder
(JDK 1.5+).
public Process execute(String[] envp, File dir)
envp
and under the working directory dir
.
The first item in the list is the command; the others are the parameters. The toString()
method is called on items in the list to convert them to Strings.
For more control over Process construction you can use
java.lang.ProcessBuilder
(JDK 1.5+).
envp
- an array of Strings, each member of which
has environment variable settings in the format
name=value, or
null if the subprocess should inherit
the environment of the current process..dir
- the working directory of the subprocess, or
null if the subprocess should inherit
the working directory of the current process..public Process execute(List envp, File dir)
envp
and under the working directory dir
.
The first item in the list is the command; the others are the parameters. The toString()
method is called on items in the list to convert them to Strings.
For more control over Process construction you can use
java.lang.ProcessBuilder
(JDK 1.5+).
envp
- a List of Objects (converted to Strings using toString), each member of which
has environment variable settings in the format
name=value, or
null if the subprocess should inherit
the environment of the current process..dir
- the working directory of the subprocess, or
null if the subprocess should inherit
the working directory of the current process..public Object first()
def list = [3, 4, 2] assert list.first() == 3 // check original is unaltered assert list == [3, 4, 2]
public List getAt(Range range)
def list = [1, "a", 4.5, true] assert list[1..2] == ["a", 4.5]
range
- a Range indicating the items to get.public List getAt(EmptyRange range)
def list = [true, 1, 3.4] assert list[0..<0] == []
range
- a Range indicating the items to get.public List getAt(Collection indices)
def list = [true, 1, 3.4, false] assert list[1,0,2] == [1, true, 3.4]
indices
- a Collection of indices.public Object getAt(int idx)
def list = [2, "a", 5.3] assert list[1] == "a"
idx
- an index.public Object head()
def list = [3, 4, 2] assert list.head() == 3 assert list == [3, 4, 2]
public Object last()
def list = [3, 4, 2] assert list.last() == 2 // check original is unaltered assert list == [3, 4, 2]
public List minus(Collection removeMe)
assert [1, "a", true, true, false, 5.3] - [true, 5.3] == [1, "a", false]
removeMe
- a Collection of elements to remove.public List minus(Iterable removeMe)
class AbcIterable implements Iterable{ Iterator iterator() { "abc".iterator() } } assert "backtrack".toList() - new AbcIterable() == ["k", "t", "r", "k"]
removeMe
- an Iterable of elements to remove.public List minus(Object removeMe)
assert ["a", 5, 5, true] - 5 == ["a", true]
removeMe
- an element to remove from the list.public Set permutations()
Example usage:
def result = [1, 2, 3].permutations() assert result == [[3, 2, 1], [3, 1, 2], [1, 3, 2], [2, 3, 1], [2, 1, 3], [1, 2, 3]] as Set
public List plus(int index, Object[] items)
def items = [1, 2, 3] def newItems = items.plus(2, 'a'..'c' as String[]) assert newItems == [1, 2, 'a', 'b', 'c', 3] assert items == [1, 2, 3]See also
addAll
for similar functionality with modify semantics, i.e. which performs
the changes on the original list itself.items
- array containing elements to be merged with elements from the original list.index
- index at which to insert the first element from the specified array.public List plus(int index, List additions)
def items = [1, 2, 3] def newItems = items.plus(2, 'a'..'c') assert newItems == [1, 2, 'a', 'b', 'c', 3] assert items == [1, 2, 3]See also
addAll
for similar functionality with modify semantics, i.e. which performs
the changes on the original list itself.additions
- a List containing elements to be merged with elements from the original List.index
- index at which to insert the first element from the given additions List.public List plus(int index, Iterable additions)
additions
- an Iterable containing elements to be merged with the elements from the original List.index
- index at which to insert the first element from the given additions Iterable.public Object pop()
def list = ["a", false, 2] assert list.pop() == 2 assert list == ["a", false]
public boolean push(Object value)
def list = [3, 4, 2] list.push("x") assert list == [3, 4, 2, "x"]
value
- element to be appended to this list..public void putAt(int idx, Object value)
def list = [2, 3] list[0] = 1 assert list == [1, 3]
idx
- an index.value
- the value to put at the given index.public void putAt(EmptyRange range, Object value)
def list = ["a", true] list[1..<1] = 5 assert list == ["a", 5, true]
range
- the (in this case empty) subset of the list to set.value
- the values to put at the given sublist or a Collection of values.public void putAt(EmptyRange range, Collection value)
def list = ["a", true] list[1..<1] = [4, 3, 2] assert list == ["a", 4, 3, 2, true]
range
- the (in this case empty) subset of the list to set.value
- the Collection of values.public void putAt(IntRange range, Collection col)
def myList = [4, 3, 5, 1, 2, 8, 10] myList[3..5] = ["a", true] assert myList == [4, 3, 5, "a", true, 10]Items in the given range are replaced with items from the collection.
range
- the subset of the list to set.col
- the collection of values to put at the given sublist.public void putAt(IntRange range, Object value)
def myList = [4, 3, 5, 1, 2, 8, 10] myList[3..5] = "b" assert myList == [4, 3, 5, "b", 10]Items in the given range are replaced with the operand. The
value
operand is
always treated as a single value.range
- the subset of the list to set.value
- the value to put at the given sublist.public void putAt(List splice, List values)
def list = ["a", true, 42, 9.4] list[1, 4] = ["x", false] assert list == ["a", "x", 42, 9.4, false]
splice
- the subset of the list to set.values
- the value to put at the given sublist.public void putAt(List splice, Object value)
def list = ["a", true, 42, 9.4] list[1, 3] = 5 assert list == ["a", 5, 42, 5]
splice
- the subset of the list to set.value
- the value to put at the given sublist.public List reverse()
def list = ["a", 4, false] assert list.reverse() == [false, 4, "a"] assert list == ["a", 4, false]
public List reverse(boolean mutate)
def list = ["a", 4, false] assert list.reverse(false) == [false, 4, "a"] assert list == ["a", 4, false] assert list.reverse(true) == [false, 4, "a"] assert list == [false, 4, "a"]
mutate
- true if the list itself should be reversed in place and returned, false if a new list should be created.public List reverseEach(Closure closure)
def result = [] [1,2,3].reverseEach { result << it } assert result == [3,2,1]
closure
- a closure to which each item is passed..public Set subsequences()
Example usage:
def result = [1, 2, 3].subsequences() assert result == [[1, 2, 3], [1, 3], [2, 3], [1, 2], [1], [2], [3]] as Set
public List tail()
def list = [3, 4, 2] assert list.tail() == [4, 2] assert list == [3, 4, 2]
public List take(int num)
num
elements from the head of this list.
def strings = [ 'a', 'b', 'c' ] assert strings.take( 0 ) == [] assert strings.take( 2 ) == [ 'a', 'b' ] assert strings.take( 5 ) == [ 'a', 'b', 'c' ]Similar to Iterable#take(int) except that it attempts to preserve the type of the original list.
num
- the number of elements to take from this list.num
elements of this list,
or else the whole list if it has less then num
elements.public List takeWhile(Closure condition)
def nums = [ 1, 3, 2 ] assert nums.takeWhile{ it < 1 } == [] assert nums.takeWhile{ it < 3 } == [ 1 ] assert nums.takeWhile{ it < 4 } == [ 1, 3, 2 ]
condition
- the closure that must evaluate to true to
continue taking elements.public SpreadMap toSpreadMap()
public List transpose()
Example usage:
def result = [['a', 'b'], [1, 2]].transpose() assert result == [['a', 1], ['b', 2]]
def result = [['a', 'b'], [1, 2], [3, 4]].transpose() assert result == [['a', 1, 3], ['b', 2, 4]]
public List withDefault(Closure init)
withLazyDefault
which decorates a list allowing
it to grow when called with index values outside the normal list bounds.init
- a Closure with the target index as parameter which generates the default value.public List withEagerDefault(Closure init)
init
Closure. Null values
can be stored in the list.
How it works: The decorated list intercepts all calls
to getAt(index)
and get(index)
. If an index greater than
or equal to the current size()
is used, the list will grow automatically
up to the specified index. Gaps will be filled by calling the init
Closure.
If generating a default value is a costly operation consider using withLazyDefault
.
Example usage:
def list = [0, 1].withEagerDefault{ 42 } assert list[0] == 0 assert list[1] == 1 assert list[3] == 42 // default value assert list == [0, 1, 42, 42] // gap filled with default value // illustrate using the index when generating default values def list2 = [5].withEagerDefault{ index -> index * index } assert list2[3] == 9 assert list2 == [5, 1, 4, 9] // illustrate what happens with null values list2[2] = null assert list2[2] == null assert list2 == [5, 1, null, 9]
init
- a Closure with the target index as parameter which generates the default value.public List withLazyDefault(Closure init)
init
Closure. Subsequent
retrieval operations if finding a null value in the list assume it was set
as null from an earlier growing operation and again call the init
Closure
to populate the retrieved value; consequently the list can't be used to store null values.
How it works: The decorated list intercepts all calls
to getAt(index)
and get(index)
. If an index greater than
or equal to the current size()
is used, the list will grow automatically
up to the specified index. Gaps will be filled by {@code null}. If a default value
should also be used to fill gaps instead of {@code null}, use withEagerDefault
.
If getAt(index)
or get(index)
are called and a null value
is found, it is assumed that the null value was a consequence of an earlier grow list
operation and the init
Closure is called to populate the value.
Example usage:
def list = [0, 1].withLazyDefault{ 42 } assert list[0] == 0 assert list[1] == 1 assert list[3] == 42 // default value assert list == [0, 1, null, 42] // gap filled with null // illustrate using the index when generating default values def list2 = [5].withLazyDefault{ index -> index * index } assert list2[3] == 9 assert list2 == [5, null, null, 9] assert list2[2] == 4 assert list2 == [5, null, 4, 9] // illustrate what happens with null values list2[2] = null assert list2[2] == 4
init
- a Closure with the target index as parameter which generates the default value.
|
Groovy JDK |