KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jgrapht > util > ArrayUnenforcedSet


1 /* ==========================================
2  * JGraphT : a free Java graph-theory library
3  * ==========================================
4  *
5  * Project Info: http://jgrapht.sourceforge.net/
6  * Project Creator: Barak Naveh (http://sourceforge.net/users/barak_naveh)
7  *
8  * (C) Copyright 2003-2006, by Barak Naveh and Contributors.
9  *
10  * This library is free software; you can redistribute it and/or modify it
11  * under the terms of the GNU Lesser General Public License as published by
12  * the Free Software Foundation; either version 2.1 of the License, or
13  * (at your option) any later version.
14  *
15  * This library is distributed in the hope that it will be useful, but
16  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
17  * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
18  * License for more details.
19  *
20  * You should have received a copy of the GNU Lesser General Public License
21  * along with this library; if not, write to the Free Software Foundation,
22  * Inc.,
23  * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
24  */

25 /* -----------------
26  * ArrayUnenforcedSet.java
27  * -----------------
28  * (C) Copyright 2006-2006, by John V. Sichi and Contributors.
29  *
30  * Original Author: John V. Sichi
31  * Contributor(s): -
32  *
33  * $Id: ArrayUnenforcedSet.java 504 2006-07-03 02:37:26Z perfecthash $
34  *
35  * Changes
36  * -------
37  * 07-May-2006 : Initial version (JVS);
38  */

39 package org.jgrapht.util;
40
41 import java.util.*;
42
43
44 /**
45  * Helper for efficiently representing small sets whose elements are known to be
46  * unique by construction, implying we don't need to enforce the uniqueness
47  * property in the data structure itself. Use with caution.
48  *
49  * <p>Note that for equals/hashCode, the class implements the Set behavior
50  * (unordered), not the list behavior (ordered); the fact that it subclasses
51  * ArrayList should be considered an implementation detail.
52  *
53  * @author John V. Sichi
54  */

55 public class ArrayUnenforcedSet<E>
56     extends ArrayList<E>
57     implements Set<E>
58 {
59
60     //~ Static fields/initializers --------------------------------------------
61

62     private static final long serialVersionUID = -7413250161201811238L;
63
64     //~ Constructors ----------------------------------------------------------
65

66     public ArrayUnenforcedSet()
67     {
68         super();
69     }
70
71     public ArrayUnenforcedSet(Collection<? extends E> c)
72     {
73         super(c);
74     }
75
76     public ArrayUnenforcedSet(int n)
77     {
78         super(n);
79     }
80
81     //~ Methods ---------------------------------------------------------------
82

83     public boolean equals(Object JavaDoc o)
84     {
85         return new SetForEquality().equals(o);
86     }
87
88     public int hashCode()
89     {
90         return new SetForEquality().hashCode();
91     }
92
93     //~ Inner Classes ---------------------------------------------------------
94

95     /**
96      * Multiple inheritance helper.
97      */

98     private class SetForEquality
99         extends AbstractSet<E>
100     {
101         public Iterator<E> iterator()
102         {
103             return ArrayUnenforcedSet.this.iterator();
104         }
105
106         public int size()
107         {
108             return ArrayUnenforcedSet.this.size();
109         }
110     }
111 }
112
113 // End ArrayUnenforcedSet.java
114
Popular Tags