diff --git a/L04-generics/src/main/java/homework/Customer.java b/L04-generics/src/main/java/homework/Customer.java index 7939f1d..7752cb9 100644 --- a/L04-generics/src/main/java/homework/Customer.java +++ b/L04-generics/src/main/java/homework/Customer.java @@ -1,18 +1,24 @@ package homework; +import java.util.Objects; + public class Customer { private final long id; private String name; private long scores; - //todo: 1. в этом классе надо исправить ошибки - public Customer(long id, String name, long scores) { this.id = id; this.name = name; this.scores = scores; } + public Customer(Customer customer) { + this.id = customer.id; + this.name = customer.name; + this.scores = customer.scores; + } + public long getId() { return id; } @@ -45,20 +51,12 @@ public String toString() { @Override public boolean equals(Object o) { if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; - - Customer customer = (Customer) o; - - if (id != customer.id) return false; - if (scores != customer.scores) return false; - return name != null ? name.equals(customer.name) : customer.name == null; + if (!(o instanceof Customer customer)) return false; + return getId() == customer.getId(); } @Override public int hashCode() { - int result = (int) (id ^ (id >>> 32)); - result = 31 * result + (name != null ? name.hashCode() : 0); - result = 31 * result + (int) (scores ^ (scores >>> 32)); - return result; + return Objects.hash(getId()); } } diff --git a/L04-generics/src/main/java/homework/CustomerReverseOrder.java b/L04-generics/src/main/java/homework/CustomerReverseOrder.java index 7f7e279..c440104 100644 --- a/L04-generics/src/main/java/homework/CustomerReverseOrder.java +++ b/L04-generics/src/main/java/homework/CustomerReverseOrder.java @@ -1,16 +1,17 @@ package homework; +import java.util.LinkedList; + public class CustomerReverseOrder { - //todo: 2. надо реализовать методы этого класса - //надо подобрать подходящую структуру данных, тогда решение будет в "две строчки" + private final LinkedList customers = new LinkedList<>(); public void add(Customer customer) { - + customers.add(customer); } public Customer take() { - return null; // это "заглушка, чтобы скомилировать" + return customers.removeLast(); } } diff --git a/L04-generics/src/main/java/homework/CustomerService.java b/L04-generics/src/main/java/homework/CustomerService.java index 6849243..b64eeed 100644 --- a/L04-generics/src/main/java/homework/CustomerService.java +++ b/L04-generics/src/main/java/homework/CustomerService.java @@ -1,23 +1,25 @@ package homework; -import java.util.Map; +import java.util.*; public class CustomerService { - //todo: 3. надо реализовать методы этого класса - //важно подобрать подходящую Map-у, посмотрите на редко используемые методы, они тут полезны + private final TreeMap map = new TreeMap<>(Comparator.comparingLong(Customer::getScores)); public Map.Entry getSmallest() { - //Возможно, чтобы реализовать этот метод, потребуется посмотреть как Map.Entry сделан в jdk - return null; // это "заглушка, чтобы скомилировать" + return cloneKey(map.firstEntry()); } public Map.Entry getNext(Customer customer) { - return null; // это "заглушка, чтобы скомилировать" + return map.higherEntry(customer) != null ? cloneKey(map.higherEntry(customer)) : null; } - public void add(Customer customer, String data) { + private Map.Entry cloneKey(Map.Entry entry) { + return Map.entry(new Customer(entry.getKey()), entry.getValue()); + } + public void add(Customer customer, String data) { + map.put(customer, data); } } diff --git a/L04-generics/src/test/java/homework/CustomerTest.java b/L04-generics/src/test/java/homework/CustomerTest.java index 65a742c..84bcfa6 100644 --- a/L04-generics/src/test/java/homework/CustomerTest.java +++ b/L04-generics/src/test/java/homework/CustomerTest.java @@ -1,6 +1,5 @@ package homework; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; @@ -29,7 +28,6 @@ void setterCustomerTest() { } @Test - @Disabled //надо удалить @DisplayName("Объект Customer как ключ в карте") void customerAsKeyTest() { //given @@ -57,7 +55,6 @@ void customerAsKeyTest() { } @Test - @Disabled //надо удалить @DisplayName("Сортировка по полю score, итерация по возрастанию") void scoreSortingTest() { //given @@ -97,7 +94,6 @@ void scoreSortingTest() { } @Test - @Disabled //надо удалить @DisplayName("Модификация коллекции") void mutationTest() { //given @@ -119,7 +115,6 @@ void mutationTest() { } @Test - @Disabled //надо удалить @DisplayName("Возвращание в обратном порядке") void reverseOrderTest() { //given