从另一个类访问Hashmap值

时间:2017-10-11 10:21:34

标签: java

我在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的零售商,如果存在,则添加这些项目。

1 个答案:

答案 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")});