Я пытаюсь игнорировать существующий элемент, который я добавил в дубликате.
Обычно, если элемент не существует, он в конечном итоге добавляет элемент в LinkedList Когда я снова пытаюсь добавить элемент, я просто хотел проигнорировать процесс добавления и увеличить значение на 1. Но проблема в том, что он продолжает добавлять элементы в LinkedList .
Может кто-нибудь объяснить мне?
class Item{
Store store;
String name;
String code;
String number;
public Item(String name, String code){
this.name = name;
this.code = code;
number = 0;
}
public boolean itemExists(String name, String code){
return this.name.equals(name) && this.code.equals(code);
}
public void increment(){ number++; }
@Override
public String toString(){ return store.getName()+ " " + name + " " + code + " " +number; }
}
Товары будут добавлены на фабрику.
class Factory{
private LinkedList<Item> items = new LinkedList<Item>():
private String name;
private String number;
public Factory(String name, String number){
this.name = name;
this.number = number;
}
public void getName(){
return name;
}
public void addItem(String name, String code){
items.add(new Item(this, name, code));
}
@Override
public String toString(){ return name + " " + number; }
public List<Item> getItems{
return items;
}
}
Фабрика с доставкой в магазин.
class Store{
private LinkedList<Factory> factories = new LinkedList<>();
public Store(){
factories.add(new Factory("MayFlower", "01");
factories.add(new Factory("SunFlower", "02");
factories.get(0).addItem("GTA", "001A");
factories.get(0).addItem("GTA", "002A");
factories.get(0).addItem("GTA", "003A");
factories.get(1).addItem("Sonic", "022A");
factories.get(1).addItem("Sonic", "023B");
factories.get(1).addItem("Sonic", "024C");
}
public List<Item> getItemFromFact(){
List<Item> temp = new ArrayList<>();
for(Factory factory: factories)
for(Item item: factory.getItems())
temp.add(item);
return temp;
}
}
Покупатель покупает товары в магазине.
class Customer{
private LinkedList<Item> items = new LinkedList<>();
public static void main(String args[]){
new Customer.view();
}
private void view(){
for(Item item: items)
System.out.println(item);
}
private void adding(){
String name = "GTA";
String code = "001A":
List<Item> item = item(name, code);
if(!item.isEmpty()){
items.add(item);
item.increment(); // will increment the value;
}
else{
System.out.println("Item does not exists");
}
}
private List<Item> item(String name, String code){
List<item> temp = new ArrayList<>();
List<item> fromStore = new Store().getItemFromFact();
for(Item item: fromStore)
if(item.itemExists(name, code))
temp.add(item)
return temp;
}
}
Основная проблема заключается в классе товара в item()
. Если я попытаюсь снова с тем же предметом, он просто добавит еще один, он станет таким.
MayFlower GTA 001A 1
MayFlower GTA 001A 1
Результат должен быть
MayFlower GTA 001A 2
после добавления другого элемента.
У меня проблема в том, что я не знаю, как сопоставить элемент от существующих. Если кто-то знает решение. Это было бы очень полезно, спасибо.