Nabeel Munir Ответов: 1

Реализация метода набора.


Привет,

У меня есть класс заказа, который имеет 3 переменные: "клиент(имя клиента)",
"name(название запрашиваемого товара)","count(общее количество запрашиваемого товара)".

Я хочу вызвать метод в другом классе, который имеет метод Set<order> getItemSet (), который возвращает набор и объединяет все запросы на один и тот же товар от разных клиентов следующим образом,
например:
если есть две просьбы:
- ItemN: Customer1: 3
- ItemN: Customer2: 1
Приказ должен быть:
- ItemN: Customer1,Customer2: 4

Я думал о том, чтобы хранить заказы в списке и перебирать их, чтобы проверить, сколько запросов имеет элемент, а затем хранить их в наборе для этого конкретного элемента. Но, честно говоря, я не уверен. Я вроде как заблудился. Любой намек или помощь в реализации были бы великолепны.

Что я уже пробовал:

public class Order implements Comparable<Order> {
	
	String customer; // Name of the customer
	String name; // Name of the requested item
	Integer count; // Count of the requested items
	
	public Order(String customer, String name, Integer count) {
		super();
		this.customer = customer;
		this.name = name;
		this.count = count;
	}
	
	
	@Override
	public int compareTo(Order arg0) {
		int status;
		status = this.name.compareTo(arg0.name);
		if (status == 0){
			status = this.customer.compareTo(arg0.customer);
			if (status == 0){
				status = this.count - (arg0.count);
			}
		}
		if (status < 0){
			status = -1;
		}
		if (status > 0){
			status = 1;
		}
		return status;
	}
	
	public boolean equals(Object obj){
		if (this == obj){
			return true;
		}
		if (obj == null){
			return false;
		}
		if (getClass() != obj.getClass()){
			return false;
		}
		Order arg0 = (Order) obj;
		if (count != arg0.count){
			return false;
		}
		if (customer == null){
			if (arg0.customer != null)
			return false;
		} else if (!customer.equals(arg0.customer)) 
			return false;
		if (name == null){
			return false;
		}else if (!name.equals(arg0.name)){
			return false;
		}
			return true;
		
	}


	@Override
	public String toString() {
		return "ItemName: "+ name + "OrdererName: "+ customer + " count: " + count ;
	}
	
	
	@Override
	public int hashCode(){
		return (name + customer + count).hashCode();
	}

}


Это второй класс, в котором я хочу реализовать метод, возвращающий set.
public class Orders implements Iterator<Order>{
	int index = 0;
	List<Order> orders	
	;
	
	public Orders(){
		index = -1;
		orders = new ArrayList<>();
		
	}
	public void add(Order item){
		orders.add(item);
	}
	public List<Order> getItemsList(){
		return orders;
	}
   <pre>public Set<Order> getItemsSet()
	{
		Set<Order> orderSet = new HashSet<>();
		
		return orderSet;
	}
<pre>@Override
	public void forEachRemaining(Consumer<? super Order> arg0) {
		//  Auto-generated method stub
		
	}

	@Override
	public boolean hasNext() {
		//  Auto-generated method stub
		return false;
	}

	@Override
	public Order next() {
		//  Auto-generated method stub
		return null;
	}

	@Override
	public void remove() {
		//  Auto-generated method stub
		
	}
}

1 Ответов

Рейтинг:
2

Gerry Schmitz

Вы пытаетесь создать "базу данных в памяти".

Это похоже на изобретение колеса, когда вы можете использовать SQL Lite, например ... и добиться большего прогресса.


Nabeel Munir

@Gerry Schmitz, я это понимаю. Но я делаю эту задачу, потому что хочу понять шаблон проектирования java.