Java tutorial
// package com.croftsoft.core.util; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.ListIterator; import java.util.Set; /********************************************************************* * * A List that, like a Set, contains no duplicate Elements. * * @author <a href="http://www.CroftSoft.com/">David Wallace Croft</a> * @version 1998-11-23 *********************************************************************/ public class SetList implements Set, List // //////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////// { protected List list; // //////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////// public SetList(List list) // //////////////////////////////////////////////////////////////////// { this.list = list; } // //////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////// /********************************************************************* * Returns false if the List already contains the object. *********************************************************************/ public synchronized boolean add(Object o) // //////////////////////////////////////////////////////////////////// { if (list.contains(o)) return false; else return list.add(o); } /********************************************************************* * Skips objects in the Collection that already exist in the List. Returns * true if any of the objects were added. *********************************************************************/ public synchronized boolean addAll(Collection c) // //////////////////////////////////////////////////////////////////// { boolean result = false; Iterator iterator = c.iterator(); while (iterator.hasNext()) { if (this.add(iterator.next())) result = true; } return result; } /********************************************************************* * Skips object in the Collection that already exist in the List. Returns * true if any of the objects were added. *********************************************************************/ public synchronized boolean addAll(int index, Collection c) // //////////////////////////////////////////////////////////////////// { boolean result = false; int i = 0; Iterator iterator = c.iterator(); while (iterator.hasNext()) { Object o = iterator.next(); if (!list.contains(o)) { list.add(index + i, o); i++; result = true; } } return result; } /********************************************************************* * @throws IllegalArgumentException * If a duplicate object already exists in the List. *********************************************************************/ public synchronized Object set(int index, Object element) // //////////////////////////////////////////////////////////////////// { if (list.contains(element)) { throw new IllegalArgumentException("duplicate"); } else return list.set(index, element); } /********************************************************************* * @throws IllegalArgumentException * If a duplicate object already exists in the List. *********************************************************************/ public synchronized void add(int index, Object element) // //////////////////////////////////////////////////////////////////// { if (list.contains(element)) { throw new IllegalArgumentException("duplicate"); } else list.add(index, element); } // //////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////// public int size() { return list.size(); } public boolean isEmpty() { return list.isEmpty(); } public boolean contains(Object o) { return list.contains(o); } public Iterator iterator() { return list.iterator(); } public Object[] toArray() { return list.toArray(); } public Object[] toArray(Object a[]) { return list.toArray(a); } public boolean remove(Object o) { return list.remove(o); } public boolean containsAll(Collection c) { return list.containsAll(c); } public boolean removeAll(Collection c) { return list.removeAll(c); } public boolean retainAll(Collection c) { return list.retainAll(c); } public void clear() { list.clear(); } public boolean equals(Object o) { return list.equals(o); } public int hashCode() { return list.hashCode(); } public Object get(int index) { return list.get(index); } public Object remove(int index) { return list.remove(index); } public int indexOf(Object o) { return list.indexOf(o); } public int lastIndexOf(Object o) { return list.lastIndexOf(o); } public ListIterator listIterator() { return list.listIterator(); } public ListIterator listIterator(int index) { return list.listIterator(index); } public List subList(int fromIndex, int toIndex) { return list.subList(fromIndex, toIndex); } // //////////////////////////////////////////////////////////////////// // //////////////////////////////////////////////////////////////////// }