-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCustomArray.java
More file actions
134 lines (111 loc) · 2.46 KB
/
CustomArray.java
File metadata and controls
134 lines (111 loc) · 2.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
public class CustomArray<T> implements GenericArray<T> {
private T array[];
private int initialCapacity;
private int counter;
private boolean resizeable;
private static int resizeSize = 5;
public CustomArray() {
this(10);
}
public CustomArray(int initialCapacity) {
this(initialCapacity, true);
}
public CustomArray(int initialCapacity, boolean resizeable) {
this.initialCapacity = initialCapacity;
this.resizeable = resizeable;
this.array = (T[]) new Object[initialCapacity];
this.counter = 0;
}
public void add(T element) {
array[counter] = element;
counter++;
if (resizeable && counter == array.length)
resize();
}
public void add(int pos, T element) {
T[] temp = (T[]) new Object[array.length + 1];
for (int i = 0; i < array.length + 1; i++) {
if (i < pos)
temp[i] = array[i];
else if (i == pos)
temp[i] = element;
else
temp[i] = array[i - 1];
}
array = temp;
}
private void resize() {
T[] temp = (T[]) new Object[array.length + resizeSize];
for (int i = 0; i < array.length; i++) {
if (array[i] != null)
temp[i] = array[i];
}
array = temp;
}
public T remove(int pos) {
T[] temp = (T[]) new Object[array.length - 1];
T removed = null;
for (int i = 0, j = 0; i < array.length; i++) {
if (i == pos) {
removed = array[i];
continue;
} else if (array[i] != null) {
temp[j] = array[i];
j++;
}
}
array = temp;
return removed;
}
public boolean removeFirst(T element) {
for (int i = 0; i < array.length; i++) {
if (array[i] == element) {
remove(i);
return true;
}
}
return false;
}
public int indexOf(T element) {
for (int i = 0; i < array.length; i++) {
if (array[i] == element) return i;
}
return -1;
}
public int lastIndexOf(T element) {
for (int i = array.length - 1; i >= 0; i--) {
if (array[i] == element) return i;
}
return -1;
}
public boolean contains(T element) {
for (int i = 0; i < array.length; i++) {
if (array[i] == element) return true;
}
return false;
}
public T get(int index) {
return array[index];
}
public T set(int index, T element) {
T old = array[index];
array[index] = element;
return old;
}
public void clear() {
counter = 0;
array = (T[]) new Object[initialCapacity];
}
public int size() {
return array.length;
}
public boolean isEmpty() {
return size() == 0;
}
public boolean isFull() {
return size() == counter;
}
public T[] toArray() {
return array;
}
}