154 lines
3.3 KiB
Java
154 lines
3.3 KiB
Java
import java.util.*;
|
|
|
|
public class ListChain<E> implements Collection<E> {
|
|
|
|
ChainLink<E> firstElement;
|
|
ChainLink<E> lastElement;
|
|
|
|
@Override
|
|
public boolean add(E e) {
|
|
if (firstElement == null) {
|
|
firstElement = new ChainLink<E>(e);
|
|
lastElement = firstElement;
|
|
} else {
|
|
ChainLink<E> newElement = new ChainLink<E>(e);
|
|
lastElement.setNext(newElement);
|
|
lastElement = newElement;
|
|
}
|
|
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public boolean addAll(Collection<? extends E> c) {
|
|
// TODO Auto-generated method stub
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public void clear() {
|
|
firstElement = null;
|
|
lastElement = null;
|
|
}
|
|
|
|
@Override
|
|
public boolean contains(Object o) {
|
|
// TODO Auto-generated method stub
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean containsAll(Collection<?> c) {
|
|
// TODO Auto-generated method stub
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean isEmpty() {
|
|
// TODO Auto-generated method stub
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public Iterator<E> iterator() {
|
|
|
|
Iterator<E> e = new Iterator<E>() {
|
|
|
|
ChainLink<E> firstE = firstElement;
|
|
|
|
@Override
|
|
public boolean hasNext() {
|
|
return firstE.getNext() != null;
|
|
}
|
|
|
|
@Override
|
|
public E next() {
|
|
E v = firstE.getValue();
|
|
firstE = firstE.getNext();
|
|
return v;
|
|
}
|
|
|
|
};
|
|
|
|
return e;
|
|
}
|
|
|
|
@Override
|
|
public boolean remove(Object o) {
|
|
return false;
|
|
}
|
|
|
|
public boolean remove(int n) {
|
|
ChainLink<E> prev = firstElement;
|
|
if (n == 0) {
|
|
firstElement = prev.getNext();
|
|
prev = null;
|
|
return true;
|
|
}
|
|
|
|
for (int i = 0; i < n-1; i++) {
|
|
if (prev.getNext() != null) {
|
|
prev = prev.getNext();
|
|
} else {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
ChainLink<E> toRemove = prev.getNext();
|
|
if (toRemove.getNext() == null) return false;
|
|
prev.setNext(toRemove.getNext());
|
|
toRemove = null;
|
|
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
public boolean removeAll(Collection<?> c) {
|
|
// TODO Auto-generated method stub
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public boolean retainAll(Collection<?> c) {
|
|
// TODO Auto-generated method stub
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public int size() {
|
|
int count = 1;
|
|
if (firstElement == null) return 0;
|
|
|
|
ChainLink<E> c = firstElement;
|
|
while (c.getNext() != null) {
|
|
c = c.getNext();
|
|
count++;
|
|
}
|
|
return count;
|
|
}
|
|
|
|
@Override
|
|
public Object[] toArray() {
|
|
// TODO Auto-generated method stub
|
|
return null;
|
|
}
|
|
|
|
@Override
|
|
public <T> T[] toArray(T[] a) {
|
|
// TODO Auto-generated method stub
|
|
return null;
|
|
}
|
|
|
|
public E get(int n) {
|
|
ChainLink<E> e = firstElement;
|
|
for (int i = 0; i < n; i++) {
|
|
if (e.getNext() != null) {
|
|
e = e.getNext();
|
|
}
|
|
}
|
|
|
|
return e.getValue();
|
|
}
|
|
|
|
}
|