File tree 5 files changed +221
-0
lines changed 5 files changed +221
-0
lines changed Original file line number Diff line number Diff line change
1
+ import java .util .Iterator ;
2
+
3
+ public interface DataCollection <T > {
4
+ boolean put (T t );
5
+ T elemAt (int index );
6
+ int length ();
7
+ Iterator createIterator ();
8
+ }
Original file line number Diff line number Diff line change
1
+ import java .util .ArrayList ;
2
+ import java .util .Iterator ;
3
+
4
+ public class DataCollectionAdapter <T > implements DataCollection <T > {
5
+ final int SIZE = 3 ;
6
+ private int length ;
7
+ private int capacity ;
8
+ private ArrayList <T > data ;
9
+
10
+ public DataCollectionAdapter (){
11
+ data = new ArrayList <T >(SIZE );
12
+ length = 0 ;
13
+ capacity = SIZE ;
14
+ }
15
+ @ Override
16
+ public boolean put (T t ) {
17
+ if (length >= capacity ) {
18
+ boolean b = resizeArray (); // 재할당
19
+ if (b ) {
20
+ data .add (t );
21
+ length ++;
22
+ }
23
+ return b ;
24
+ }
25
+ else {
26
+ data .add (t );
27
+ length ++;
28
+ }
29
+ return true ;
30
+ }
31
+
32
+ @ Override
33
+ public T elemAt (int index ) {
34
+ if (index >= 0 && index < length ) {
35
+ return (T ) data .get (index );
36
+ }
37
+ return null ;
38
+ }
39
+
40
+ @ Override
41
+ public int length () {
42
+ return length ;
43
+ }
44
+
45
+ @ Override
46
+ public Iterator createIterator () {
47
+ Iterator <T > itr = data .iterator ();
48
+ return itr ;
49
+ }
50
+
51
+ private boolean resizeArray () {
52
+ ArrayList <T > newData = new ArrayList <T >(capacity + SIZE );
53
+ if (newData == null ) {
54
+ return false ;
55
+ }
56
+ for (int i = 0 ; i < capacity ; i ++) {
57
+ newData .add (data .get (i ));
58
+ }
59
+ data = newData ;
60
+ capacity += SIZE ;
61
+ return true ;
62
+ }
63
+ }
Original file line number Diff line number Diff line change
1
+ import java .util .Iterator ;
2
+
3
+ //DynamicArray<String> strArray = new DynamicArray<String>();
4
+ //DynamicArray<Integer> intArray = new DynamicArray<Integer>();
5
+
6
+ public class DynamicArray <T > implements DataCollection <T > {
7
+ final int SIZE = 3 ;
8
+ private int length ;
9
+ private int capacity ;
10
+ private Object [] data ;
11
+
12
+ public DynamicArray () {
13
+ data = new Object [SIZE ];
14
+ length = 0 ;
15
+ capacity = SIZE ;
16
+ }
17
+
18
+ public boolean put (T t ) {
19
+ if (length >= capacity ) {
20
+ boolean b = resizeArray (); // 재할당
21
+ if (b ) {
22
+ data [length ] = t ;
23
+ length ++;
24
+ }
25
+ return b ;
26
+ }
27
+ else {
28
+ data [length ] = t ;
29
+ length ++;
30
+ }
31
+ return true ;
32
+ }
33
+
34
+ public T elemAt (int index ) {
35
+ if (index >= 0 && index < length ) {
36
+ return (T ) data [index ];
37
+ }
38
+ return null ;
39
+ }
40
+
41
+ public int length () {
42
+ return length ;
43
+ }
44
+
45
+ public Iterator createIterator () {
46
+ return new DynamicArrayIterator (this );
47
+ }
48
+
49
+ private boolean resizeArray () {
50
+ Object [] newData = new Object [capacity + SIZE ];
51
+ if (newData == null ) {
52
+ return false ;
53
+ }
54
+ for (int i = 0 ; i < capacity ; i ++) {
55
+ newData [i ] = data [i ];
56
+ }
57
+ data = newData ;
58
+ capacity += SIZE ;
59
+ return true ;
60
+ }
61
+ }
Original file line number Diff line number Diff line change
1
+ import java .util .Iterator ;
2
+
3
+ public class DynamicArrayIterator implements Iterator {
4
+ private DynamicArray array ;
5
+ private int index ;
6
+
7
+ public DynamicArrayIterator (DynamicArray arr ) {
8
+ array = arr ;
9
+ index = 0 ;
10
+ }
11
+
12
+ @ Override
13
+ public boolean hasNext () {
14
+ return (index < array .length ());
15
+ }
16
+
17
+ @ Override
18
+ public Object next () {
19
+ Object obj = array .elemAt (index );
20
+ index ++;
21
+ return obj ;
22
+ }
23
+
24
+ @ Override
25
+ public void remove () {
26
+ //throw new UnsupportedOperationException();
27
+ }
28
+ }
Original file line number Diff line number Diff line change
1
+ import java .util .Iterator ;
2
+
3
+ public class TestDynamicArray {
4
+ public static void main (String [] args ) {
5
+ DataCollection <String > arr1 = new DynamicArray <String >();
6
+ arr1 .put ("Seoul" );
7
+ arr1 .put ("Busan" );
8
+ arr1 .put ("Gwangju" );
9
+ arr1 .put ("Daejeon" );
10
+ arr1 .put ("Cheonan" );
11
+ arr1 .put ("Ulsan" );
12
+ arr1 .put ("Daegu" );
13
+ arr1 .put ("Incheon" );
14
+
15
+
16
+
17
+ System .out .println ("\n 변경 전: DynamicArray를 이용" );
18
+ System .out .println ("--------------------------------" );
19
+ System .out .println ("index" );
20
+ for (int i = 0 ; i < arr1 .length (); i ++) {
21
+ String s = (String ) arr1 .elemAt (i );
22
+ System .out .println (s );
23
+ }
24
+
25
+
26
+ System .out .println ("--------------------------------" );
27
+ System .out .println ("iterator" );
28
+ for (Iterator iter = arr1 .createIterator (); iter .hasNext (); ) {
29
+ String s = (String ) iter .next ();
30
+ System .out .println (s );
31
+ }
32
+
33
+
34
+ DataCollection <String > arr2 = new DataCollectionAdapter <String >();
35
+ arr2 .put ("Seoul" );
36
+ arr2 .put ("Busan" );
37
+ arr2 .put ("Gwangju" );
38
+ arr2 .put ("Daejeon" );
39
+ arr2 .put ("Cheonan" );
40
+ arr2 .put ("Ulsan" );
41
+ arr2 .put ("Daegu" );
42
+ arr2 .put ("Incheon" );
43
+
44
+
45
+
46
+ System .out .println ("\n 변경 후: DataCollectionAdapter를 이용" );
47
+ System .out .println ("--------------------------------" );
48
+ System .out .println ("index" );
49
+ for (int i = 0 ; i < arr2 .length (); i ++) {
50
+ String s = (String ) arr2 .elemAt (i );
51
+ System .out .println (s );
52
+ }
53
+
54
+ System .out .println ("--------------------------------" );
55
+ System .out .println ("iterator" );
56
+ for (Iterator iter = arr2 .createIterator (); iter .hasNext (); ) {
57
+ String s = (String ) iter .next ();
58
+ System .out .println (s );
59
+ }
60
+ }
61
+ }
You can’t perform that action at this time.
0 commit comments