KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > ArraySet


1 /***
2  * ASM examples: examples showing how ASM can be used
3  * Copyright (c) 2000-2005 INRIA, France Telecom
4  * All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  * notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  * notice, this list of conditions and the following disclaimer in the
13  * documentation and/or other materials provided with the distribution.
14  * 3. Neither the name of the copyright holders nor the names of its
15  * contributors may be used to endorse or promote products derived from
16  * this software without specific prior written permission.
17  *
18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
19  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
20  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
21  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
22  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
28  * THE POSSIBILITY OF SUCH DAMAGE.
29  */

30
31 /**
32  * @author Eric Bruneton
33  */

34 public class ArraySet {
35
36     private int[] values = new int[3];
37
38     private int size;
39
40     public boolean contains(final int v) {
41         for (int i = 0; i < size; ++i) {
42             if (values[i] == v) {
43                 return true;
44             }
45         }
46         return false;
47     }
48
49     public void add(final int v) {
50         if (!contains(v)) {
51             if (size == values.length) {
52                 System.err.println("[enlarge]");
53                 int[] newValues = new int[values.length + 3];
54                 System.arraycopy(values, 0, newValues, 0, size);
55                 values = newValues;
56             }
57             values[size++] = v;
58         }
59     }
60
61     public void remove(final int v) {
62         int i = 0;
63         int j = 0;
64         while (i < size) {
65             int u = values[i];
66             if (u != v) {
67                 values[j++] = u;
68             }
69             ++i;
70         }
71         size = j;
72     }
73
74     // test method
75

76     public static void main(final String JavaDoc[] args) {
77         ArraySet s = new ArraySet();
78         System.err.println("add 1");
79         s.add(1);
80         System.err.println("add 1");
81         s.add(1);
82         System.err.println("add 2");
83         s.add(2);
84         System.err.println("add 4");
85         s.add(4);
86         System.err.println("add 8");
87         s.add(8);
88         System.err.println("contains 3 = " + s.contains(3));
89         System.err.println("contains 1 = " + s.contains(1));
90         System.err.println("remove 1");
91         s.remove(1);
92         System.err.println("contains 1 = " + s.contains(1));
93     }
94 }
95
Popular Tags