Cześć, mam za zadanie napisać program, który będzie przychowywał numery zamówień, numery nie mogą być zduplikowane. Na chwilę obecną napisałem coś takiego:
package com;
import java.util.*;
public class Main {
public static void main(String[] args) {
Orders orders = new Orders(20);
orders.printOrders();
}
}
class GenerateOrderNumber {
private int number;
private static final Random random = new Random();
public GenerateOrderNumber(int number) {
this.number = number;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof GenerateOrderNumber)) return false;
GenerateOrderNumber that = (GenerateOrderNumber) o;
return number == that.number;
}
@Override
public int hashCode() {
return Objects.hash(number);
}
@Override
public String toString() {
return "Zamówienie numer: " + number;
}
public static GenerateOrderNumber generateOrderNumber() {
int orderNumber = random.nextInt(10);
return new GenerateOrderNumber(orderNumber);
}
}
class Orders {
private int ordersSize;
public Orders(int ordersSize) {
this.ordersSize = ordersSize;
}
public Set<GenerateOrderNumber> ordersSet() {
Set<GenerateOrderNumber> orderNumbers = new HashSet<>();
for (int i = 0; i < ordersSize; i++) {
orderNumbers.add(GenerateOrderNumber.generateOrderNumber());
}
return orderNumbers;
}
public void printOrders() {
Set<GenerateOrderNumber> orderNumbers = ordersSet();
for (GenerateOrderNumber item : orderNumbers) {
System.out.println(item);
}
}
}
Numery się nie powtarzają, jednak mój mentor twierdzi, że w tym kodzie tego nie widać... Jak wy to oceniacie?
99xmarcin