package org.hwo.collections; import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import java.util.Set; public class LinkedListSet implements Set { private LinkedList 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 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 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[] toArray(T[] a) { return elements.toArray(a); } }