|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object universe.List<X>
public abstract class List<X>
Represents Lisp style Lists. List.create(...) should be used to create lists, and push/pop/top/etc... to pull them apart. All methods are functional, meaning a given list is an immutable data type: methods return a new list, they do not change the old one. The methods can be used to write beautiful recursive functions :) The inner classes (Build, Comp, GComp, Fold, Map, Pred, and Zip) are Function Classes that allow you to implement needed functionalities over basic traversals/iteration. This implementation has been updated to eliminate stack usage, which allows you (the programmer) to create HUGE lists without any problems ;)
Nested Class Summary | |
---|---|
static class |
List.Build<X>
Build a List from the sequence of integers [0..len-1] |
static class |
List.Comp<X>
Compare two List Elements of the same type |
static class |
List.Fold<X,Y>
Fold the List into a single Value |
static class |
List.GComp<X,Y>
(General) Compare two List Elements of possibly different types (true is "LessThan" for sort(), but "Equal" for same(...)) |
static class |
List.Map<X,Y>
Apply a function to each element of the list |
static class |
List.Pred<X>
Select Elements of a List |
static class |
List.Stringer<X>
Compute a String from a List (Visitor) |
static class |
List.Zip<X,Y,Z>
Zip two Lists into a single Value |
Constructor Summary | |
---|---|
List(int l)
Default Constructor |
Method Summary | ||
---|---|---|
List<X> |
add(X a,
int i)
Add an Element to this list at the given index |
|
boolean |
andmap(List.Pred<X> p)
Does this Predicate match all the elements in this List? |
|
List<X> |
append(List<X> l)
Append another List to the end of this List |
|
List<X> |
append(X x)
Append an element to the end of this List |
|
static
|
buildlist(List.Build<X> b,
int len)
Build a list from the numbers 0..(len-1) |
|
boolean |
contains(List.Pred<X> p)
Does this Predicate match anything in this List? |
|
boolean |
contains(X x)
Does the given X occur in this List? |
|
boolean |
containsAll(List<X> l)
Does this List contain all of the given List's Elements? |
|
boolean |
containsAll(List<X> l,
List.Comp<X> c)
Does this List contain all of the given List's Elements using the given comparer? |
|
|
containsAllG(List<Y> l,
List.GComp<X,Y> c)
Does this List contain all of the given List's Elements using the given comparer? |
|
boolean |
containsAny(List<X> l)
Does this List contain any of the given List's Elements? |
|
boolean |
containsAny(List<X> l,
List.Comp<X> c)
Does this List contain any of the given List's Elements using the given comparer? |
|
|
containsAnyG(List<Y> l,
List.GComp<X,Y> c)
Does this List contain any of the given List's Elements using the given comparer? |
|
|
containsG(Y y,
List.GComp<X,Y> c)
Does the given X occur in this List? |
|
int |
count(List.Pred<X> p)
Count the elements that match the given Predicate |
|
static
|
create()
Create an Empty List |
|
static
|
create(java.lang.Iterable<X> xs)
Create a List from an Iterable... |
|
static
|
create(X... xa)
Create a List from an array/variable arguments |
|
static
|
create(X x)
Create a List from a single argument |
|
static
|
create(X[] xa,
int i)
Create a List from a fixed array, starting at index 'i' |
|
abstract boolean |
equals(java.lang.Object o)
Equals for Lists... |
|
List<X> |
filter(List.Pred<X> p)
Filter out all the non-matching Elements |
|
List<X> |
filter(X x)
Filter out all the non-same Elements |
|
List<X> |
filterout(List.Pred<X> p)
Filter out all the matching Elements |
|
List<X> |
filterout(X x)
Filter out all the same Elements |
|
X |
find(List.Pred<X> p)
Return the first matching X, throws a RuntimeException if not there |
|
X |
find(X x)
Return the given X, throws a RuntimeException if not there |
|
|
findG(Y y,
List.GComp<X,Y> c)
Return the given X, throws a RuntimeException if not there |
|
|
fold(List.Fold<X,Y> f,
Y b)
Fold this List to a single Value (Left to Right) |
|
|
foldl(List.Fold<X,Y> f,
Y b)
Fold this List to a single Value (Left to Right) |
|
|
foldr(List.Fold<X,Y> f,
Y b)
Fold this List to a single Value (Right to Left) |
|
abstract int |
hashCode()
HashCode for Lists... |
|
int |
index(List.Pred<X> p)
Return the Index of the first match |
|
int |
index(X x)
Return the Index of the given element |
|
List<X> |
insert(java.lang.Iterable<X> xs,
List.Comp<X> c)
Insert a number of Elements into this SORTED list |
|
List<X> |
insert(X a,
List.Comp<X> c)
Insert an Element into this SORTED list using the given Comparison |
|
List<X> |
insertionSort(List.Comp<X> c)
Sort this List using Insertion Sort |
|
abstract boolean |
isEmpty()
Is this List Empty? |
|
java.util.Iterator<X> |
iterator()
Return an Iterator for this list |
|
int |
length()
The Length of This List |
|
X |
lookup(int i)
Lookup the i^th item in this List |
|
static void |
main(java.lang.String[] args)
|
|
|
map(List.Map<X,Y> m)
Apply a function to each Element of this List |
|
boolean |
ormap(List.Pred<X> p)
Does this Predicate match any element in this List? |
|
abstract List<X> |
pop()
Return this List without the first Element |
|
List<X> |
pop(int k)
Return this List without the first k Elements |
|
List<X> |
push(List<X> xs)
Push all Elements of the given List on the front of this List |
|
List<X> |
push(X x)
Push a X on the front of this List |
|
List<X> |
remove(int i)
Remove an Element from this list at the given index |
|
List<X> |
remove(List.Pred<X> p)
Remove the first matching X |
|
List<X> |
remove(X x)
Remove the first occurence of the given X |
|
List<X> |
removeDuplicates()
Remove duplicate items from this list |
|
List<X> |
removeDuplicates(List.Comp<X> c)
Remove duplicate items from this list |
|
|
removeG(Y y,
List.GComp<X,Y> c)
Remove the first occurence of the given X |
|
List<X> |
replace(int i,
X s)
Replace the element at index 'i' with 's' |
|
List<X> |
replace(List.Pred<X> p,
X s)
Replace the first matching X with 's' |
|
List<X> |
replace(X t,
X s)
Replace the first occurrence of 't' with 's' |
|
List<X> |
replaceAll(List.Pred<X> p,
X x)
Replace all matching Xs with 't' |
|
List<X> |
replaceAll(X t,
X s)
Replace all occurrences of 't' with 's' |
|
List<X> |
reverse()
Reverse this List |
|
List<X> |
reverse(int i)
Reverse the first i elements of this List |
|
boolean |
same(List<X> l)
Is the given list have the same elements as this list? |
|
boolean |
same(List<X> l,
List.Comp<X> c)
Is the given list have the same elements as this list using the given comparer? |
|
|
sameG(List<Y> l,
List.GComp<X,Y> c)
Is the given list have the same elements as this list using the given comparer? |
|
List<X> |
shuffle()
Shuffle the elements of this list randomly |
|
List<X> |
sort(List.Comp<X> c)
Sort this List using the given Comparison |
|
List<X> |
sublist(int i,
int k)
Return a sublist, starting at index i, with length k |
|
X[] |
toArray(X[] arr)
Convert this List into an Array, starting at Index 'i' |
|
java.util.List<X> |
toJavaList()
Convert this List into a java.util.List |
|
abstract X |
top()
Return the first Element of this List |
|
java.lang.String |
toString()
Canonical ToString |
|
java.lang.String |
toString(List.Stringer<X> s)
To String using a Stringer (Visitor) |
|
java.lang.String |
toString(java.lang.String sep,
java.lang.String pre)
To String, with a separator and prefix |
|
|
zip(List.Zip<X,Y,Z> z,
List<Y> ys)
Zip two lists (this, and 'l') into a single list, one element at a time |
Methods inherited from class java.lang.Object |
---|
getClass, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public List(int l)
Method Detail |
---|
public static void main(java.lang.String[] args)
public static <X> List<X> create()
public static <X> List<X> create(X x)
public static <X> List<X> create(X... xa)
public static <X> List<X> create(X[] xa, int i)
public static <X> List<X> create(java.lang.Iterable<X> xs)
public List<X> push(X x)
public List<X> push(List<X> xs)
public List<X> reverse()
public List<X> reverse(int i)
public java.lang.String toString()
toString
in class java.lang.Object
public int index(X x)
public int index(List.Pred<X> p)
public boolean same(List<X> l)
public boolean same(List<X> l, List.Comp<X> c)
public <Y> boolean sameG(List<Y> l, List.GComp<X,Y> c)
public List<X> pop(int k)
public List<X> append(List<X> l)
public List<X> append(X x)
public abstract X top()
public abstract List<X> pop()
public abstract boolean isEmpty()
public boolean ormap(List.Pred<X> p)
public boolean andmap(List.Pred<X> p)
public boolean contains(X x)
public boolean contains(List.Pred<X> p)
public <Y> boolean containsG(Y y, List.GComp<X,Y> c)
public boolean containsAny(List<X> l)
public boolean containsAny(List<X> l, List.Comp<X> c)
public <Y> boolean containsAnyG(List<Y> l, List.GComp<X,Y> c)
public boolean containsAll(List<X> l)
public boolean containsAll(List<X> l, List.Comp<X> c)
public <Y> boolean containsAllG(List<Y> l, List.GComp<X,Y> c)
public X find(X x)
public X find(List.Pred<X> p)
public <Y> X findG(Y y, List.GComp<X,Y> c)
public List<X> remove(X x)
public <Y> List<X> removeG(Y y, List.GComp<X,Y> c)
public List<X> remove(List.Pred<X> p)
public int length()
public X lookup(int i)
public java.lang.String toString(java.lang.String sep, java.lang.String pre)
public java.lang.String toString(List.Stringer<X> s)
public List<X> filterout(X x)
public List<X> filterout(List.Pred<X> p)
public List<X> filter(X x)
public List<X> filter(List.Pred<X> p)
public int count(List.Pred<X> p)
public List<X> removeDuplicates()
public List<X> removeDuplicates(List.Comp<X> c)
public <Y> Y fold(List.Fold<X,Y> f, Y b)
public <Y> Y foldl(List.Fold<X,Y> f, Y b)
public <Y> Y foldr(List.Fold<X,Y> f, Y b)
public <Y> List<Y> map(List.Map<X,Y> m)
public List<X> add(X a, int i)
public List<X> remove(int i)
public List<X> insert(java.lang.Iterable<X> xs, List.Comp<X> c)
public List<X> insert(X a, List.Comp<X> c)
public List<X> sort(List.Comp<X> c)
public List<X> insertionSort(List.Comp<X> c)
public X[] toArray(X[] arr)
public java.util.Iterator<X> iterator()
iterator
in interface java.lang.Iterable<X>
public <Y,Z> List<Z> zip(List.Zip<X,Y,Z> z, List<Y> ys)
public static <X> List<X> buildlist(List.Build<X> b, int len)
public List<X> replace(int i, X s)
public List<X> replace(X t, X s)
public List<X> replace(List.Pred<X> p, X s)
public List<X> replaceAll(X t, X s)
public List<X> replaceAll(List.Pred<X> p, X x)
public abstract boolean equals(java.lang.Object o)
equals
in class java.lang.Object
public abstract int hashCode()
hashCode
in class java.lang.Object
public java.util.List<X> toJavaList()
public List<X> sublist(int i, int k)
public List<X> shuffle()
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |