Package org.eclipse.m2m.atl.emftvm.util
Class LazyCollection<E>
java.lang.Object
org.eclipse.m2m.atl.emftvm.util.LazyCollection<E>
- Type Parameters:
E
- the collection element type
- All Implemented Interfaces:
Iterable<E>
,Collection<E>
- Direct Known Subclasses:
LazyBag
,LazyList
,LazyOrderedSet
,LazySet
Immutable
Collection
that supports lazy evaluation.
Based on the OCL 2.2 specification (formal/2010-02-01).-
Nested Class Summary
Modifier and TypeClassDescriptionclass
Iterator
that appends an object to the underlying collection.class
LazyCollection.ReadOnlyIterator
that caches values of the underlying collection.class
LazyCollection.ReadOnlyIterator
that removes duplicate values from the underlying collection.static class
LazyCollection.ReadOnlyIterator
that collects the results of evaluating a function on each of the elements from the underlying collection.class
LazyCollection.ReadOnlyIterator
that excludes a given object.class
LazyCollection.ReadOnlyIterator
that filters elements from the underlying collection by evaluating a condition function on them.static class
Recursively flattens any nestedIterable
s by iterating over their elements as well.static class
Recursively flattens any nestedIterable
s by iterating over their elements as well.static class
LazyCollection.ReadOnlyIterator
forInteger
ranges.class
LazyCollection.ReadOnlyIterator
that returns only elements contained in both underlying collections.class
Converts anIterator
to aListIterator
.static class
LazyCollection.ReadOnlyIterator
forLong
ranges.static class
static class
class
LazyCollection<E>.FilterIterator
that rejects elements from the underlying collection by evaluation a condition function on them.class
LazyCollection.ReadOnlyIterator
that returns the values of the underlying collection in reverse order.class
LazyCollection.ReadOnlyIterator
that returns the values of the underlying collection in reverse order.class
LazyCollection<E>.FilterIterator
that selects elements from the underlying collection by evaluation a condition function on them.class
class
class
LazyCollection.ReadOnlyIterator
that returns elements contained in this underlying collection, but not in the other underlying collection.class
Iterator
that returns first the elements of the underlying collection, then the elements of the other collection.class
Iterator
that returns first the elements of the underlying collection, then the elements of the other collection, with all duplicates removed.class
AbstractLazyCollection.ReadOnlyIterator
that wraps around the underlying collection.class
AbstractLazyCollection.ReadOnlyListIterator
that wraps around the underlying collection. -
Field Summary
Modifier and TypeFieldDescriptionprotected Collection<E>
Element cache.The inner data source for this collection.Cached element occurrence map. -
Constructor Summary
ConstructorDescriptionCreates an emptyLazyCollection
.LazyCollection
(Iterable<E> dataSource) Creates aLazyCollection
arounddataSource
. -
Method Summary
Modifier and TypeMethodDescriptionboolean
Unsupported.boolean
addAll
(Collection<? extends E> c) Unsupported.Returns any element in the source collection for whichbody
evaluates totrue
.protected StringBuffer
appendElements
(StringBuffer buf, ExecEnv env) Appends the elements of this collection tobuf
.asBag()
Returns the Bag containing all the elements from self, including duplicates.Returns an OrderedSet that contains all the elements from self, in undefined order, with duplicates removed.Returns a Sequence that contains all the elements from self, in undefined order.asSet()
Returns the Set containing all the elements from self, with duplicated removed.abstract String
Evaluates the collection as an OCL String.void
clear()
Unsupported.boolean
boolean
containsAll
(Collection<?> c) boolean
containsAny
(Collection<?> c) Checks if this collection contains any of the elements in the specified collection.int
Returns the number of times thatobject
occurs in the collection self.protected void
Creates the cache collections.boolean
Returnstrue
ifobject
is not an element of self,false
otherwise.boolean
excludesAll
(Collection<?> c2) Does self contain none of the elements ofc2
?abstract LazyCollection<E>
Returns the collection containing all elements of self apart from all occurrences ofobject
.abstract LazyCollection<E>
excludingAll
(Collection<?> coll) Returns the collection containing all elements of self minuscoll
.boolean
Checks ifcondition
holds for at least one element in the underlying collection.boolean
Checks ifcondition
holds for at least one element pair in the cartesian product of the underlying collection.boolean
Checks ifcondition
holds for all elements in the underlying collection.boolean
Checks ifcondition
holds for all element pairs in the cartesian product of the underlying collection.boolean
Returnstrue
ifobject
is an element of self,false
otherwise.boolean
includesAll
(Collection<?> c2) Does self contain all the elements ofc2
?abstract LazyCollection<E>
Returns the collection containing all elements of self plusobject
.abstract LazyCollection<E>
Returns the collection containing all elements of self plusobject
.abstract LazyCollection<E>
includingAll
(Collection<? extends E> coll) Returns the collection containing all elements of self pluscoll
.abstract LazyCollection<E>
includingAll
(Collection<? extends E> coll, int index) Returns the collection containing all elements of self pluscoll
.abstract LazyCollection<E>
includingRange
(E first, E last) Returns the collection containing all elements of self plus the collection offirst
running tolast
.boolean
isEmpty()
boolean
Results intrue
ifbody
evaluates to a different value for each element in the source collection; otherwise, result isfalse
.<T> T
Builds an accumulated value by calling theupdater
function for each element in the underlying collection and the previous accumulated value.iterator()
Returns a Map indexed by the return value(s)x
of the body expression, containing the Set of elements for which the body expression returnsx
.mappedBySingle
(CodeBlock body) Returns a Map indexed by the return value(s)x
of the body expression, containing a single element for which the body expression returnsx
.max()
The element with the maximum value of all elements in self.min()
The element with the minimum value of all elements in self.boolean
notEmpty()
Is self not the empty collection?boolean
Results intrue
if there is exactly one element in the source collection for whichbody
istrue
.The cartesian product operation ofself
andc2
.boolean
Unsupported.boolean
removeAll
(Collection<?> c) Unsupported.boolean
retainAll
(Collection<?> c) Unsupported.int
size()
abstract LazyCollection<E>
Results in the Collection containing all elements of the source collection.sum()
The addition of all elements in self.Object[]
toArray()
<T> T[]
toArray
(T[] a) toString()
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Collection
equals, hashCode, parallelStream, removeIf, spliterator, stream, toArray
-
Field Details
-
dataSource
The inner data source for this collection. Is set tonull
when cache is complete. -
cache
Element cache. -
occurrences
Cached element occurrence map.
-
-
Constructor Details
-
LazyCollection
Creates aLazyCollection
arounddataSource
.- Parameters:
dataSource
- the underlying collection
-
LazyCollection
public LazyCollection()Creates an emptyLazyCollection
.
-
-
Method Details
-
createCache
protected void createCache()Creates the cache collections. -
add
Unsupported.- Specified by:
add
in interfaceCollection<E>
- Parameters:
o
- the element to add- Returns:
- nothing
- Throws:
UnsupportedOperationException
-
addAll
Unsupported.- Specified by:
addAll
in interfaceCollection<E>
- Parameters:
c
- the collection to add- Returns:
- nothing
- Throws:
UnsupportedOperationException
-
clear
public void clear()Unsupported.- Specified by:
clear
in interfaceCollection<E>
- Throws:
UnsupportedOperationException
-
contains
- Specified by:
contains
in interfaceCollection<E>
-
containsAll
- Specified by:
containsAll
in interfaceCollection<E>
-
containsAny
Checks if this collection contains any of the elements in the specified collection.- Parameters:
c
- collection to be checked for containment in this collection.- Returns:
true
if this collection contains any of the elements in the specified collection.
-
isEmpty
public boolean isEmpty()- Specified by:
isEmpty
in interfaceCollection<E>
-
iterator
-
remove
Unsupported.- Specified by:
remove
in interfaceCollection<E>
- Parameters:
o
- the element to remove- Returns:
- nothing
- Throws:
UnsupportedOperationException
-
removeAll
Unsupported.- Specified by:
removeAll
in interfaceCollection<E>
- Parameters:
c
- the collection to remove- Returns:
- nothing
- Throws:
UnsupportedOperationException
-
retainAll
Unsupported.- Specified by:
retainAll
in interfaceCollection<E>
- Parameters:
c
- the collection to retain- Returns:
- nothing
- Throws:
UnsupportedOperationException
-
size
public int size()- Specified by:
size
in interfaceCollection<E>
-
toArray
- Specified by:
toArray
in interfaceCollection<E>
-
toArray
public <T> T[] toArray(T[] a) - Specified by:
toArray
in interfaceCollection<E>
-
toString
-
asString
Evaluates the collection as an OCL String.- Parameters:
env
- the execution environment- Returns:
- the String representation of this
LazyCollection
.
-
appendElements
Appends the elements of this collection tobuf
.- Parameters:
buf
- theStringBuffer
to add the elements' string representation toenv
- the execution environment- Returns:
- buf
-
includes
Returnstrue
ifobject
is an element of self,false
otherwise.- Parameters:
object
- the object to check for- Returns:
true
ifobject
is an element of self,false
otherwise.
-
excludes
Returnstrue
ifobject
is not an element of self,false
otherwise.- Parameters:
object
- the object to check for- Returns:
true
ifobject
is not an element of self,false
otherwise.
-
count
Returns the number of times thatobject
occurs in the collection self.- Parameters:
object
- the object to check for- Returns:
- The number of times that
object
occurs in the collection self.
-
includesAll
Does self contain all the elements ofc2
?- Parameters:
c2
- the collection to check- Returns:
true
iff self contains all elements ofc2
.
-
excludesAll
Does self contain none of the elements ofc2
?- Parameters:
c2
- the collection to check- Returns:
true
iff self contains no elements ofc2
.
-
notEmpty
public boolean notEmpty()Is self not the empty collection?- Returns:
false
iff self contains no elements.
-
max
The element with the maximum value of all elements in self. Elements must be of a type supporting the max operation. The max operation - supported by the elements - must take one parameter of typeE
and be both associative and commutative. Integer and Real fulfill this condition.- Returns:
- The element with the maximum value of all elements in self.
-
min
The element with the minimum value of all elements in self. Elements must be of a type supporting the min operation. The min operation - supported by the elements - must take one parameter of type T and be both associative and commutative. Integer and Real fulfill this condition.- Returns:
- The element with the minimum value of all elements in self.
-
sum
The addition of all elements in self. Elements must be of a type supporting the + operation. The + operation must take one parameter of typeE
and be both associative: (a+b)+c = a+(b+c), and commutative: a+b = b+a. Integer and Real fulfill this condition.- Returns:
self->iterate( elem; acc : E = 0 | acc + elem )
-
product
The cartesian product operation ofself
andc2
.Lazy operation.
- Type Parameters:
T
- the element type- Parameters:
c2
- the other factor in the cartesian product- Returns:
self->iterate (e1; acc: Set(Tuple(first: T, second: T2)) = Set{} |
c2->iterate (e2; acc2: Set(Tuple(first: T, second: T2)) = acc |
acc2->including (Tuple{first = e1, second = e2}) ) )
-
asBag
Returns the Bag containing all the elements from self, including duplicates.Lazy operation.
- Returns:
- The Bag containing all the elements from self, including duplicates.
-
asSequence
Returns a Sequence that contains all the elements from self, in undefined order.Lazy operation.
- Returns:
- A Sequence that contains all the elements from self, in undefined order.
-
asSet
Returns the Set containing all the elements from self, with duplicated removed.Lazy operation.
- Returns:
- The Set containing all the elements from self, with duplicated removed.
-
asOrderedSet
Returns an OrderedSet that contains all the elements from self, in undefined order, with duplicates removed.Lazy operation.
- Returns:
- An OrderedSet that contains all the elements from self, in undefined order, with duplicates removed.
-
including
Returns the collection containing all elements of self plusobject
.Lazy operation.
- Parameters:
object
- the object to include- Returns:
- The collection containing all elements of self plus
object
.
-
including
Returns the collection containing all elements of self plusobject
.Lazy operation.
- Parameters:
object
- the object to includeindex
- the index at which to insertcoll
(starting at 1)- Returns:
- The collection containing all elements of self plus
object
.
-
includingAll
Returns the collection containing all elements of self pluscoll
.Lazy operation.
- Parameters:
coll
- the collection to include- Returns:
- The collection containing all elements of self plus
coll
.
-
includingAll
Returns the collection containing all elements of self pluscoll
.Lazy operation.
- Parameters:
coll
- the collection to includeindex
- the index at which to insertcoll
(starting at 1)- Returns:
- The collection containing all elements of self plus
coll
.
-
excluding
Returns the collection containing all elements of self apart from all occurrences ofobject
.Lazy operation.
- Parameters:
object
- the object to exclude- Returns:
- The collection containing all elements of self apart from all occurrences of
object
.
-
excludingAll
Returns the collection containing all elements of self minuscoll
.Lazy operation.
- Parameters:
coll
- the collection to exclude- Returns:
- The collection containing all elements of self minus
coll
.
-
includingRange
Returns the collection containing all elements of self plus the collection offirst
running tolast
.Lazy operation.
- Parameters:
first
- the first object of the range to includelast
- the last object of the range to include- Returns:
- The collection containing all elements of self plus the collection of
first
running tolast
-
forAll
Checks ifcondition
holds for all elements in the underlying collection.- Parameters:
condition
- the condition function- Returns:
true
iffcondition
holds for all elements in the underlying collection.
-
forAll2
Checks ifcondition
holds for all element pairs in the cartesian product of the underlying collection.- Parameters:
condition
- the condition function- Returns:
true
iffcondition
holds for all element pairs in the cartesian product of the underlying collection.
-
exists
Checks ifcondition
holds for at least one element in the underlying collection.- Parameters:
condition
- the condition function- Returns:
true
iffcondition
holds for at least one element in the underlying collection.
-
exists2
Checks ifcondition
holds for at least one element pair in the cartesian product of the underlying collection.- Parameters:
condition
- the condition function- Returns:
true
iffcondition
holds for at least one element pair in the cartesian product of the underlying collection.
-
iterate
Builds an accumulated value by calling theupdater
function for each element in the underlying collection and the previous accumulated value.- Type Parameters:
T
- the element type- Parameters:
initialValue
- the initial accumulated valueupdater
- the updater function- Returns:
- The accumulated value
-
isUnique
Results intrue
ifbody
evaluates to a different value for each element in the source collection; otherwise, result isfalse
.- Parameters:
body
- the code to execute on each element- Returns:
true
ifbody
evaluates to a different value for each element in the source collection.
-
any
Returns any element in the source collection for whichbody
evaluates totrue
. If there is more than one element for whichbody
istrue
, one of them is returned. There must be at least one element fulfillingbody
.- Parameters:
body
- the function to evaluate on each element- Returns:
- any element in the source collection for which body evaluates to
true
. - Throws:
NoSuchElementException
- if there is no element in the source collection for whichbody
istrue
.
-
one
Results intrue
if there is exactly one element in the source collection for whichbody
istrue
.- Parameters:
body
- the function to evaluate on each element- Returns:
true
if there is exactly one element in the source collection for whichbody
istrue
.
-
sortedBy
Results in the Collection containing all elements of the source collection. The element for which body has the lowest value comes first, and so on. The type of the body expression must have the<
operation defined. The<
operation must return a Boolean value and must be transitive (i.e., ifa < b
andb < c
thena < c
).- Parameters:
body
- the function to evaluate on each element- Returns:
- the sorted collection
-
mappedBy
Returns a Map indexed by the return value(s)x
of the body expression, containing the Set of elements for which the body expression returnsx
.- Parameters:
body
- the function to evaluate on each element- Returns:
- the Map
-
mappedBySingle
Returns a Map indexed by the return value(s)x
of the body expression, containing a single element for which the body expression returnsx
.- Parameters:
body
- the function to evaluate on each element- Returns:
- the Map
-