Mega Code Archive

 
Categories / Java / Collections Data Structure
 

One Item Set

/* $Id$  *  * Behavior Protocols Tools - Parsers, Transformations  * Copyright (C) 2006-2007  DSRG, Charles University in Prague  *                          http://dsrg.mff.cuni.cz/  *  * This library is free software; you can redistribute it and/or  * modify it under the terms of the GNU Lesser General Public  * License as published by the Free Software Foundation; either  * version 2.1 of the License, or (at your option) any later version.  *  * This library is distributed in the hope that it will be useful,  * but WITHOUT ANY WARRANTY; without even the implied warranty of  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU  * Lesser General Public License for more details.  *  * You should have received a copy of the GNU Lesser General Public  * License along with this library; if not, write to the Free Software  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,  * MA 02110-1301 USA  *  */ import java.io.Serializable; import java.util.AbstractCollection; import java.util.Iterator; import java.util.NoSuchElementException; /**  *  * @author thorm  */ public class OneItemSet<E> extends AbstractCollection<E> implements Serializable{          public boolean add(E i) {         if (item == i) {             return false;         }         if (item == null) {             item = i;             return true;         }         throw new IllegalArgumentException();     }          public Iterator<E> iterator() {         return new Iterator() {             public boolean hasNext() {                 return hasNxt;             }                          public E next() {                 if (hasNxt) {                     hasNxt = false;                     return item;                 }                 throw new NoSuchElementException();             }                          public void remove() {                 item = null;             }             boolean hasNxt = true;         };     }          public int size() {         return (item == null) ? 0 : 1;     }     public int hashCode() {         return item.hashCode();     }     public boolean equals(Object o) {         return (o instanceof OneItemSet) && item.equals(((OneItemSet) o).item);     }                  E item; }