2017-09-21 31 views
1

ハッシュマップにデータを追加します。レストランからの単品注文の場合、レストラン番号order_idに追加することができます。HashMapかなり簡単です。私は<strong>のHashMap</strong>に<strong>キー(restaurant_id)</strong>と<strong>値(ORDER_ID)</strong>を追加しようとしています

複数のレストランからの注文には少し難しさがあります。ここ

は、forループレストランIDを提供するコード

//Get multiple restaurant ids 
    for(int i = 0; i < Utils.cart_map.size(); i++) 
    { 
     RestaurantModel restaurant = Utils.cart_restaurants.get(i);   
     String restaurantId = String.valueOf(Integer.parseInt(restaurant.getId())); 
    } 

この上でカートに提示されているrestaurant_idsを与えます。例えば

for(int i = 0; i < Utils.cart_map.size(); i++) 
{ 
     RestaurantModel restaurant = Utils.cart_restaurants.get(i); 
     String restaurantId = String.valueOf(Integer.parseInt(restaurant.getId())); 
     for (int j = 0; j < orders.length(); j++) 
     { 
      order_id = orders.getString(j); 

      ordersHashMap.put(restaurantId, order_id); 
     } 
} 

restaurant_ids41,42あるここオーダーID

// get multiple order ids 
for (int j = 0; j < orders.length(); j++) 
{ 
    order_id = orders.getString(j); 
    ordersHashMap.put(restaurantId, order_id); 
} 

をフェッチ

これは以下のコードは、完全なコードです。 オーダーID41であり、10001および42は10002である。上記のコードを実行すると、各レストランで同じorder_idsが保存されます。ここ が出力されます。

"42" -> "10001" 
"41" -> "10001" 

出力は次のようにする必要があります。

"42" -> "10001" 
"41" -> "10002" 

私はここで何が欠けているのか分かりません。

ヘルプを使用すると、すべてのレストランのためにそうすべての注文は、すべてのレストランに同じ注文を解析しているように見えます

+3

'orders'は単に' Strings'のコレクションです - どのオーダーが特定のレストランに属していると定義されていますか?そのような定義がある場合、あなたのループでそれをチェックする必要があります。そうでなければ、 'ordersHashMap'のすべての要素が更新されます。 –

+0

@ScaryWombatうんうん。これを達成するための最良の方法は何ですか?私はAPIから注文を受けています。 – Jacky

+0

1つのレストランの注文を得る方法はありますか?もしそうなら、あなたは何らかのコントロールを持っています。あるいは実際に返されるデータに 'restaurantId'が含まれていますか? –

答えて

0

ArrayListを使用し、その中にrestaurant_idsを追加しました。 ここに完全なコードがあります。

ArrayList<String> restList = new ArrayList<String>(); 
String restaurantId = null; 

//Get multiple restaurant ids 
for(int i = 0; i < Utils.cart_map.size(); i++) { 

    RestaurantModel restaurant = Utils.cart_restaurants.get(i); // Restaurants details which are presented in cart 
    restaurantId = String.valueOf(Integer.parseInt(restaurant.getId())); 

    restList.add(restaurantId); 
} 

// get multiple order ids 
for (int j = 0; j < orders.length(); j++) { 

    String rest_id = restList.get(j); 
    order_id = orders.getString(j); 

    ordersHashMap.put(rest_id, order_id); 
} 
0

をいただければ幸いです。特定のレストランの注文だけではありません。 Btw。 1つのレストランで1つの注文がある場合にのみ、コードが機能します。マップでは、キーに値を1つだけ割り当てることができるためです。

関連する問題

 関連する問題