89 lines
1.4 KiB
Java
89 lines
1.4 KiB
Java
package org.hwo.collections;
|
|
|
|
import java.util.Collection;
|
|
import java.util.Iterator;
|
|
import java.util.LinkedList;
|
|
import java.util.Set;
|
|
|
|
public class LinkedListSet<T> implements Set<T> {
|
|
|
|
private LinkedList<T> elements;
|
|
|
|
public LinkedListSet(){
|
|
this.elements = new LinkedList<>();
|
|
}
|
|
|
|
@Override
|
|
public boolean add(T e) {
|
|
if (elements.contains(e))
|
|
return false;
|
|
return elements.add(e);
|
|
}
|
|
|
|
@Override
|
|
public boolean addAll(Collection<? extends T> c) {
|
|
boolean changed = false;
|
|
for (T e: c) {
|
|
if (add(e))
|
|
changed = true;
|
|
}
|
|
return changed;
|
|
}
|
|
|
|
@Override
|
|
public void clear() {
|
|
elements.clear();
|
|
}
|
|
|
|
@Override
|
|
public boolean contains(Object o) {
|
|
return elements.contains(o);
|
|
}
|
|
|
|
@Override
|
|
public boolean containsAll(Collection<?> c) {
|
|
return elements.containsAll(c);
|
|
}
|
|
|
|
@Override
|
|
public boolean isEmpty() {
|
|
return elements.isEmpty();
|
|
}
|
|
|
|
@Override
|
|
public Iterator<T> iterator() {
|
|
return elements.iterator();
|
|
}
|
|
|
|
@Override
|
|
public boolean remove(Object o) {
|
|
return elements.remove(o);
|
|
}
|
|
|
|
@Override
|
|
public boolean removeAll(Collection<?> c) {
|
|
return elements.removeAll(c);
|
|
}
|
|
|
|
@Override
|
|
public boolean retainAll(Collection<?> c) {
|
|
return elements.retainAll(c);
|
|
}
|
|
|
|
@Override
|
|
public int size() {
|
|
return elements.size();
|
|
}
|
|
|
|
@Override
|
|
public Object[] toArray() {
|
|
return elements.toArray();
|
|
}
|
|
|
|
@Override
|
|
public <T> T[] toArray(T[] a) {
|
|
return elements.toArray(a);
|
|
}
|
|
|
|
}
|