tdd-java-demo
tdd java demo with micro-commits
git clone https://9o.is/git/tdd-java-demo.git
commit 0c0ecd7d40b0ff7cdff9fb0c1a4b5030ef8be034 parent f2284116e901134be3da6616a4291772fd2ea121 Author: Jul <jul@9o.is> Date: Wed, 31 Mar 2021 22:02:17 +0800 set hashmap to multiset in Discount Diffstat:
| M | src/main/java/takehome/Discount.java | | | 16 | +++++++--------- |
1 file changed, 7 insertions(+), 9 deletions(-)
diff --git a/src/main/java/takehome/Discount.java b/src/main/java/takehome/Discount.java @@ -4,22 +4,21 @@ import com.google.common.collect.HashMultiset; import com.google.common.collect.Multiset; import com.google.common.collect.Multisets; -import java.util.HashMap; import java.util.Map; public class Discount { - private final Map<Item, Integer> items; + private final Multiset<Item> items; private final double amount; public Discount(double amount, Item item) { this.amount = amount; - this.items = new HashMap<>(); - this.items.put(item, 1); + this.items = HashMultiset.create(); + this.items.add(item); } public Discount(double amount, Map<Item, Integer> items) { this.amount = amount; - this.items = items; + this.items = toMultiset(items); } public double getAmount() { @@ -29,15 +28,14 @@ public class Discount { @SuppressWarnings("UnstableApiUsage") double getDiscount(Basket basket) { Multiset<Item> basketSet = toMultiset(basket.getAmounts()); - Multiset<Item> discountSet = toMultiset(items); int occurrences = 0; - boolean occurrence = Multisets.containsOccurrences(basketSet, discountSet); + boolean occurrence = Multisets.containsOccurrences(basketSet, items); while (occurrence) { occurrences++; - basketSet = Multisets.difference(basketSet, discountSet); - occurrence = Multisets.containsOccurrences(basketSet, discountSet); + basketSet = Multisets.difference(basketSet, items); + occurrence = Multisets.containsOccurrences(basketSet, items); } return amount * occurrences;