This repository has been archived by the owner on Nov 20, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Cart.java
120 lines (97 loc) · 2.51 KB
/
Cart.java
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
import java.util.ArrayList;
import java.util.Dictionary;
import java.util.Enumeration;
public class Cart {
private ItemMap<CartItem, Integer> Contents;
private ArrayList<CartItem> cartItems = new ArrayList<CartItem>();
public Cart() {
Contents = new ItemMap<>();
}
public Cart(int capacity) {
Contents = new ItemMap<>(capacity);
}
public ItemMap<CartItem, Integer> getContents() {
return Contents;
}
public ArrayList<CartItem> getCartItems() {
return cartItems;
}
public boolean addToCart(CartItem item, int quanitity) {
if (quanitity > 0) {
if (Contents.get(item) != null) {
changeItemsInCart(item, quanitity + Contents.get(item));
} else {
Contents.put(item, quanitity);
}
return true;
} else {
return false;
}
}
public boolean changeItemsInCart(CartItem item, int quanitity) {
if (quanitity > 0) {
if (Contents.get(item) != null) {
Contents.put(item, quanitity);
return true;
}
}
return false;
}
public boolean removeFromCart(CartItem item) {
return Contents.remove(item) != null;
}
}
class ItemMap<K extends CartItem, V> extends Dictionary<K,V> {
private ArrayList<K> keys;
private ArrayList<V> values;
public ItemMap() {
keys = new ArrayList<>(5);
values = new ArrayList<>(5);
}
public ItemMap(int size) {
keys = new ArrayList<>(size);
values = new ArrayList<>(size);
}
public Enumeration<V> elements(){
return null;
//Not implemented yet
}
public Enumeration<K> keys(){
return null;
//Not implemented yet
}
public V get(Object key) {
int indexOfValue = keys.indexOf(key);
if (indexOfValue >= 0) {
return values.get(indexOfValue);
}
return null;
}
public boolean isEmpty() {
return keys.isEmpty();
}
public V put(K key, V value) {
assert key != null;
assert keys.size() == values.size();
int indexOfValue = keys.indexOf(key);
if (indexOfValue >= 0) {
values.remove(indexOfValue);
values.add(indexOfValue, value);
} else {
keys.add(key);
values.add(value);
}
return null;
}
public V remove(Object key) {
int indexOfValue = keys.indexOf(key);
if (indexOfValue >= 0) {
keys.remove(indexOfValue);
return values.remove(indexOfValue);
}
return null;
}
public int size() {
return keys.size();
}
}