/Users/petercappello/NetBeansProjects/56-2014/56-2014-lab2/src/IntegerSet.java |
1
2
3 @author
4
5 public class IntegerSet
6 {
7 private static final int MAX_SET_SIZE = 101;
8
9 private final boolean[] booleanArray = new boolean[ MAX_SET_SIZE ];
10
11
12 Which of the 2 implementations is better?
13 (the commented out one & the implementation that is live code)
14 Define your concept of better (e.g., faster).
15
16 public static IntegerSet union( IntegerSet set1, IntegerSet set2 )
17 {
18
19
20
21
22
23 IntegerSet union = new IntegerSet();
24 System.arraycopy( set1.booleanArray, 0, union.booleanArray, 0, MAX_SET_SIZE );
25 for ( int i = 0; i < MAX_SET_SIZE; i++ )
26 {
27 if ( set2.booleanArray[ i ] )
28 {
29 union.booleanArray[ i ] = true;
30 }
31 }
32 return union;
33 }
34
35 public static IntegerSet intersection( IntegerSet set1, IntegerSet set2 )
36 {
37 IntegerSet intersection = new IntegerSet();
38 for ( int i = 0; i < MAX_SET_SIZE; i++ )
39 {
40 intersection.booleanArray[ i ] = set1.booleanArray[ i ] && set2.booleanArray[ i ];
41 }
42 return intersection;
43 }
44
45 public void insertElement( int element ) { booleanArray[ element ] = true; }
46
47 public void deleteElement( int element ) { booleanArray[ element ] = false; }
48
49 @Override
50 public String toString()
51 {
52 boolean isEmpty = true;
53 StringBuilder string = new StringBuilder();
54 string.append( "{ " );
55 for ( int i = 0; i < MAX_SET_SIZE; i++ )
56 {
57 if ( booleanArray[ i ] )
58 {
59 isEmpty = false;
60 string.append( i ).append( ' ' );
61 }
62 }
63 return isEmpty ? "---" : string.append( '}').toString();
64 }
65
66 public boolean isEqual( IntegerSet set )
67 {
68 for ( int i = 0; i < MAX_SET_SIZE; i++ )
69 {
70 if ( booleanArray[ i ] != set.booleanArray[ i ] )
71 {
72 return false;
73 }
74 }
75 return true;
76 }
77
78
79 Normally, putting unit tests in the class's main method is not considered
80 to be an approach that scales to large or long-lived software projects.
81
82 @param args
83
84 public static void main( String[] args )
85 {
86 IntegerSet integerSet1 = new IntegerSet();
87 System.out.println("intergerSet1 is empty: " + integerSet1 );
88 IntegerSet integerSet2 = new IntegerSet();
89 System.out.println("empty set union empty set is empty set: " + union( integerSet1, integerSet2 ) );
90 IntegerSet universe = new IntegerSet();
91 for ( int i = 0; i < MAX_SET_SIZE; i++ )
92 {
93 universe.booleanArray[ i ] = true;
94 }
95 System.out.println( "universe: " + universe );
96 System.out.println("empty set union universe = universe: " + union( integerSet1, universe ) );
97 System.out.println("empty set intersection universe = empty set: " + intersection( integerSet1, universe ) );
98 integerSet1.insertElement( 0 );
99 System.out.println("intergerSet1 has only element 0: " + integerSet1 );
100 System.out.println("intergerSet1 != integerSet2: isEqual: " + integerSet1.isEqual( integerSet2 ) );
101 System.out.println("intergerSet2 != integerSet1: isEqual: " + integerSet2.isEqual( integerSet1 ) );
102 integerSet2.insertElement( 0 );
103 System.out.println("intergerSet1 == integerSet2: isEqual: " + integerSet1.isEqual( integerSet2 ) );
104 integerSet1.deleteElement( 0 );
105 System.out.println("intergerSet1 is empty: " + integerSet1 );
106 }
107 }
108