-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAVector.java
More file actions
76 lines (64 loc) · 1.72 KB
/
AVector.java
File metadata and controls
76 lines (64 loc) · 1.72 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
package avector;
import exceptions.VectorPequenino;
public class AVector {
// Essa implementação, se usada corretamente, mostra índices vazios do array como "null", diferente das outras.
// Sugiro ignorar o comentário acima pois isso daqui precisa de revisão. Mas via de regra, funciona ¯\_(ツ)_/¯
private Object[] arrai;
private Integer capacity;
private Integer size;
public AVector() {
arrai = new Object[10];
capacity = 3;
size = 0;
}
public void mimDaEssaDiamba() {
System.out.printf("[ ");
for (int i=0; i<capacity; i++) {
System.out.printf("%s, ", arrai[i]);
}
System.out.printf("]"); System.out.printf(" size: %d, cap: %d, isEmpty: %b%n", size(), capacity, isEmpty());
}
private void doubleCap() {
Object [] aux = new Object[capacity*2];
for(int i=0; i<size; i++) {
aux[i] = arrai[i];
}
arrai = aux;
capacity *= 2;
}
public Object elemAtRank(Integer rank) {
return arrai[rank];
}
public Object replaceAtRank(Integer rank, Object x) {
if (rank > size) throw new VectorPequenino("Fora do range, amigão.");
Object oldBoy = arrai[rank];
arrai[rank] = x;
if (oldBoy == null) size++;
return oldBoy;
}
public void insertAtRank(Integer rank, Object x) {
if (rank > size) throw new VectorPequenino("Fora do range, amigão.");
if (size == capacity) doubleCap();
for (int i=size; i>rank; i--) {
arrai[i] = arrai[i-1];
}
arrai[rank] = x;
size++;
}
public Object removeAtRank(Integer rank) {
Object judas = arrai[rank];
for (int i=rank; i<size; i++) {
if (i == capacity-1) arrai[i] = null; else {
arrai[i] = arrai[i+1];
}
}
size--;
return judas;
}
public Integer size() {
return size;
}
public boolean isEmpty() {
return (size<1);
}
}