|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Objectjava.util.AbstractCollection<E>
java.util.AbstractSet<T>
edu.rice.cs.plt.collect.AbstractPredicateSet<Pair<T1,T2>>
edu.rice.cs.plt.collect.AbstractRelation<T1,T2>
public abstract class AbstractRelation<T1,T2>
An abstract parent class for implementations of Relation. Subclasses must provide
the size methods isInfinite(), hasFixedSize(), and isStatic(),
and the query methods contains(Object, Object), contains(Object),
iterator(), firstSet(), matchFirst(T1), secondSet(),
and matchSecond(T2). To support mutation, they must also override
add(Object, Object) and remove(Object, Object). For best performance,
they may also override AbstractPredicateSet.isEmpty(), AbstractPredicateSet.size(int) and AbstractCollection.clear().
| Nested Class Summary | |
|---|---|
protected class |
AbstractRelation.InverseRelation
An inverse of the enclosing relation, defined in terms of Pair.inverse(). |
| Constructor Summary | |
|---|---|
AbstractRelation()
|
|
| Method Summary | |
|---|---|
boolean |
add(Pair<T1,T2> p)
Invokes add(Object, Object). |
boolean |
add(T1 first,
T2 second)
Add Pair.make(first, second) to the set. |
abstract boolean |
contains(java.lang.Object obj)
Test whether the set contains an object. |
abstract boolean |
contains(T1 first,
T2 second)
Tests whether the given objects appear as a pair in this relation. |
boolean |
containsFirst(T1 first)
Returns firstSet().contains(first). |
boolean |
containsSecond(T2 second)
Returns secondSet().contains(second). |
PredicateSet<T2> |
excludeFirsts()
Returns secondSet(). |
PredicateSet<T1> |
excludeSeconds()
Returns firstSet(). |
abstract PredicateSet<T1> |
firstSet()
The set of firsts. |
abstract boolean |
hasFixedSize()
true if this iterable is known to have a fixed size. |
Relation<T2,T1> |
inverse()
Returns an AbstractRelation.InverseRelation. |
abstract boolean |
isInfinite()
true if the iterable is known to have infinite size. |
abstract boolean |
isStatic()
true if this iterable is unchanging. |
abstract java.util.Iterator<Pair<T1,T2>> |
iterator()
|
abstract PredicateSet<T2> |
matchFirst(T1 first)
The set of seconds corresponding to a specific first. |
abstract PredicateSet<T1> |
matchSecond(T2 second)
The set of firsts corresponding to a specific second. |
boolean |
remove(java.lang.Object o)
Invokes remove(Object, Object) if contains(o) is true. |
boolean |
remove(T1 first,
T2 second)
Remove Pair.make(first, second) from the set. |
abstract PredicateSet<T2> |
secondSet()
The set of seconds. |
| Methods inherited from class edu.rice.cs.plt.collect.AbstractPredicateSet |
|---|
isEmpty, size, size |
| Methods inherited from class java.util.AbstractSet |
|---|
equals, hashCode, removeAll |
| Methods inherited from class java.util.AbstractCollection |
|---|
addAll, clear, containsAll, retainAll, toArray, toArray, toString |
| Methods inherited from class java.lang.Object |
|---|
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
| Methods inherited from interface java.util.Set |
|---|
addAll, clear, containsAll, equals, hashCode, isEmpty, removeAll, retainAll, size, toArray, toArray |
| Methods inherited from interface edu.rice.cs.plt.iter.SizedIterable |
|---|
isEmpty, size, size |
| Constructor Detail |
|---|
public AbstractRelation()
| Method Detail |
|---|
public abstract boolean isInfinite()
SizedIterabletrue if the iterable is known to have infinite size. If true, an iterator over the iterable in its
current state will never return false from hasNext().
isInfinite in interface SizedIterable<Pair<T1,T2>>public abstract boolean hasFixedSize()
SizedIterabletrue if this iterable is known to have a fixed size. This is the case if the iterable is immutable,
or if changes can only replace values, not remove or add them. An infinite iterable may be fixed if it
is guaranteed to never become finite.
hasFixedSize in interface SizedIterable<Pair<T1,T2>>public abstract boolean isStatic()
SizedIterabletrue if this iterable is unchanging. This implies that hasFixedSize() is true, and that
iterator() will always return the same (either == or equal() and immutable) elements
in the same order. ("Immutable" here means that equals() invocations are consistent over time -- if
two objects are equal, they will never become inequal, and vice versa.)
isStatic in interface SizedIterable<Pair<T1,T2>>
public abstract boolean contains(T1 first,
T2 second)
T1 and T2 because the Collection.contains(java.lang.Object)
method allows arbitrary objects.
contains in interface Relation<T1,T2>contains in interface Predicate2<T1,T2>public abstract boolean contains(java.lang.Object obj)
AbstractPredicateSetAbstractCollection.contains(java.lang.Object)) is a linear search,
which is almost always unreasonable for a set.
contains in interface Relation<T1,T2>contains in interface Predicate<java.lang.Object>contains in interface java.util.Collection<Pair<T1,T2>>contains in interface java.util.Set<Pair<T1,T2>>contains in class AbstractPredicateSet<Pair<T1,T2>>public abstract java.util.Iterator<Pair<T1,T2>> iterator()
iterator in interface java.lang.Iterable<Pair<T1,T2>>iterator in interface java.util.Collection<Pair<T1,T2>>iterator in interface java.util.Set<Pair<T1,T2>>iterator in class java.util.AbstractCollection<Pair<T1,T2>>public abstract PredicateSet<T1> firstSet()
Relation
firstSet in interface Relation<T1,T2>public abstract PredicateSet<T2> matchFirst(T1 first)
Relation
matchFirst in interface Relation<T1,T2>public abstract PredicateSet<T2> secondSet()
Relation
secondSet in interface Relation<T1,T2>public abstract PredicateSet<T1> matchSecond(T2 second)
Relation
matchSecond in interface Relation<T1,T2>
public boolean add(T1 first,
T2 second)
RelationPair.make(first, second) to the set.
add in interface Relation<T1,T2>
public boolean remove(T1 first,
T2 second)
RelationPair.make(first, second) from the set.
remove in interface Relation<T1,T2>public boolean add(Pair<T1,T2> p)
add(Object, Object).
add in interface Relation<T1,T2>add in interface java.util.Collection<Pair<T1,T2>>add in interface java.util.Set<Pair<T1,T2>>add in class java.util.AbstractCollection<Pair<T1,T2>>public boolean remove(java.lang.Object o)
remove(Object, Object) if contains(o) is true.
remove in interface Relation<T1,T2>remove in interface java.util.Collection<Pair<T1,T2>>remove in interface java.util.Set<Pair<T1,T2>>remove in class java.util.AbstractCollection<Pair<T1,T2>>public Relation<T2,T1> inverse()
AbstractRelation.InverseRelation.
inverse in interface Relation<T1,T2>public boolean containsFirst(T1 first)
firstSet().contains(first).
containsFirst in interface Relation<T1,T2>public PredicateSet<T2> excludeFirsts()
secondSet().
excludeFirsts in interface Relation<T1,T2>public boolean containsSecond(T2 second)
secondSet().contains(second).
containsSecond in interface Relation<T1,T2>public PredicateSet<T1> excludeSeconds()
firstSet().
excludeSeconds in interface Relation<T1,T2>
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||