我在Database类中创建了3个HashMaps。我想在添加项目之前检查hashmap中的某个值。所以我想检查我的零售商HashMap的特定值,如果该值存在,我添加某些项目。 我不确定如何从另一个类调用hashmap或如何编写该循环,我哪里出错?
我的HashMap创建:
private static Map<Long, User> users = new HashMap<>();
private static Map<Long, Retailer> retailers = new HashMap<>();
private static Map<Long, Item> items = new HashMap<>();
我创建项目/项目的方法:
public ItemService(){
items.put(1l, new Item(1, "Black Suit Shoes", "Black" , "11"));
items.put(2l, new Item(2, "Nike Runners", "Red" , "7"));
items.put(3l, new Item(3, "Nike Sports Socks", "Yellow" , "4"));
}
我想确保存在具有特定ID的零售商,如果存在,则添加这些项目。
答案 0 :(得分:0)
要检查Map
中是否存在特定密钥,您可以使用containsKey
方法。您没有说明Item
ID是如何生成的,但我会假设它们是唯一的。
考虑到您可以执行以下操作来添加项目:
public boolean addItemsIfRetailerExists(Long retailerId, Item item){
if (!retailers.containsKey(retailerId)){
return false;
}
items.put(item.id, item);
return true;
}
请注意,这意味着使用您要插入的Item
调用方法:
addItemsIfRetailerExists(5341l, new Item(1, "Black Suit Shoes", "Black" , "11"));
要添加更多功能,我添加了boolean
return
值,表示该项是否已插入。
您甚至可以为此方法创建一个重载,它会接收Item
数组,而不是一次添加多个项目:
public boolean addItemsIfRetailerExists(Long retailerId, Item[] itemsToAdd){
if (!retailers.containsKey(retailerId)){
return false;
}
for(Item i:itemsToAdd){
items.put(i.id, i);
}
return true;
}
您现在可以使用要添加的所有项目进行调用:
addItemsIfRetailerExists(5341l, new Item[] {
new Item(1, "Black Suit Shoes", "Black" , "11"),
new Item(2, "Nike Runners", "Red" , "7"),
new Item(3, "Nike Sports Socks", "Yellow" , "4")});