2017-10-11 10 views
0

データベースクラスに3つのHashMapsを作成しました。そしてアイテムを追加する前にハッシュマップの特定の値をチェックしたいと思います。ですから、Retailer 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

...またはそれらのゲッターを – OldCurmudgeon

+1

...作成するか、実行したいものを行うパブリックメソッドを追加してください。 – OldCurmudgeon

答えて

0

Mapに特定のキーが存在するかどうかを確認するには、containsKeyメソッドを使用できます。 ItemのIDはどのように生成されたのかはっきりさせていませんが、一意であると仮定します。

あなたができることを考慮した項目を追加するには、以下の:これは、挿入したいItemとメソッド呼び出しを意味していること

public boolean addItemsIfRetailerExists(Long retailerId, Item item){ 
    if (!retailers.containsKey(retailerId)){ 
     return false; 
    } 

    items.put(item.id, item); 
    return true; 
} 

注:

addItemsIfRetailerExists(5341l, new Item(1, "Black Suit Shoes", "Black" , "11")); 

より多くの機能を追加するにはIアイテムが挿入されたかどうかを示すbooleanreturnの値が追加されました。

あなたも、一度に複数のアイテムを追加できるようにする代わりに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")}); 
関連する問題