View Javadoc
1 /* 2 * Copyright (c) 2003, Henri Yandell 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or 6 * without modification, are permitted provided that the 7 * following conditions are met: 8 * 9 * + Redistributions of source code must retain the above copyright notice, 10 * this list of conditions and the following disclaimer. 11 * 12 * + Redistributions in binary form must reproduce the above copyright notice, 13 * this list of conditions and the following disclaimer in the documentation 14 * and/or other materials provided with the distribution. 15 * 16 * + Neither the name of Genjava-Core nor the names of its contributors 17 * may be used to endorse or promote products derived from this software 18 * without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 21 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 23 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 24 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 25 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 26 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 27 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 28 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 29 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30 * POSSIBILITY OF SUCH DAMAGE. 31 */ 32 // OrderedSet.java 33 package com.generationjava.collections; 34 35 import java.util.Set; 36 import java.util.Collection; 37 import java.util.Iterator; 38 import java.util.List; 39 import java.util.LinkedList; 40 41 /*** 42 * An implementation of Set that guarentees ordering 43 * remains constant. 44 */ 45 public class OrderedSet implements Set { 46 47 private List list = null; 48 49 public OrderedSet() { 50 this.list = new LinkedList(); 51 } 52 53 public OrderedSet(Collection c) { 54 this(); 55 if(c != null) { 56 Iterator iterator = c.iterator(); 57 while(iterator.hasNext()) { 58 add(iterator.next()); 59 } 60 } 61 } 62 63 /*** 64 * Create using the given List as the internal storage method. 65 */ 66 public OrderedSet(List list) { 67 this.list = list; 68 } 69 70 public boolean add(Object obj) { 71 // Adds the specified element to this set if it is not already present (optional operation). 72 if(!contains(obj)) { 73 list.add(obj); 74 return true; 75 } else { 76 return false; 77 } 78 } 79 80 public boolean addAll(Collection c) { 81 // Adds all of the elements in the specified collection to this set if they're not already present (optional operation). 82 boolean ret = false; 83 if(c != null) { 84 Iterator iterator = c.iterator(); 85 while(iterator.hasNext()) { 86 if(add(iterator.next())) { 87 ret = true; 88 } 89 } 90 } 91 return ret; 92 } 93 94 public void clear() { 95 // Removes all of the elements from this set (optional operation). 96 list.clear(); 97 } 98 99 public boolean contains(Object obj) { 100 // Returns true if this set contains the specified element. 101 return list.contains(obj); 102 } 103 104 public boolean containsAll(Collection c) { 105 // Returns true if this set contains all of the elements of the specified collection. 106 return list.containsAll(c); 107 } 108 109 public boolean equals(Object obj) { 110 // Compares the specified object with this set for equality. 111 return list.equals(obj); 112 } 113 114 public int hashCode() { 115 // Returns the hash code value for this set. 116 return list.hashCode(); 117 } 118 119 public boolean isEmpty() { 120 // Returns true if this set contains no elements. 121 return list.isEmpty(); 122 } 123 124 public Iterator iterator() { 125 // Returns an iterator over the elements in this set. 126 return list.iterator(); 127 } 128 129 public boolean remove(Object obj) { 130 // Removes the specified element from this set if it is present (optional operation). 131 return list.remove(obj); 132 } 133 134 public boolean removeAll(Collection c) { 135 // Removes from this set all of its elements that are contained in the specified collection (optional operation). 136 return list.removeAll(c); 137 } 138 139 public boolean retainAll(Collection c) { 140 // Retains only the elements in this set that are contained in the specified collection (optional operation). 141 boolean ret = false; 142 if(c != null) { 143 Iterator iterator = c.iterator(); 144 while(iterator.hasNext()) { 145 Object obj = iterator.next(); 146 if(!contains(obj)) { 147 remove(obj); 148 ret = true; 149 } 150 } 151 } 152 return ret; 153 } 154 155 public int size() { 156 // Returns the number of elements in this set (its cardinality). 157 return list.size(); 158 } 159 160 public Object[] toArray() { 161 // Returns an array containing all of the elements in this set. 162 return list.toArray(); 163 } 164 165 public Object[] toArray(Object[] arr) { 166 // Returns an array containing all of the elements in this set whose runtime type is that of the specified array. 167 return list.toArray(arr); 168 } 169 170 }

This page was automatically generated by Maven