2016-08-10 13 views
0

私は以下のコードを持っています。サイズとループを使用してマップをループすることができます

String[] guest1 = { "surfing", "yoga", "walking" }; 
String[] guest2 = { "wine", "relaxation", "beach" }; 

ArrayList<String> list1 = new ArrayList<>(); 
list1.add("museums"); 
list1.add("canals"); 
list1.add("nightlife"); 
list1.add("walking"); 
ArrayList<String> list2 = new ArrayList<>(); 
list2.add("beach"); 
list2.add("surfing"); 
list2.add("relaxation"); 
ArrayList<String> list3 = new ArrayList<>(); 
list3.add("surfing"); 
list3.add("nightlife"); 
list3.add("beach"); 
list3.add("food"); 
list3.add("wine"); 
list3.add("walking"); 

String[] sagres = { "beach", "surfing", "relaxation" }; 
String[] biarritz = { "surfing", "nightlife", "beach", "food", "wine", "walking" }; 

Map map = new HashMap<String, ArrayList<String>>(); 
map.put("amsterdam", list1); 
map.put("sagres", list2); 
map.put("biarritz", list3); 

for (int i = 0; i < map.size(); i++) { 
    System.out.println(map.keySet()); 
} 

ここでは、サイズをループしてキーと値を取得しようとしています。

私は、これは

for (Object keys : map.keySet().toArray()) { 
    System.out.println(keys); 
} 

を使用して行うことができることを知っているしかし、私は一度に2つの値を比較し、それに応じて仕事をしなければなりません。私はsizeとループを使用できるかどうかを知りたい。

おかげ

+2

'map.entrySet()'に変更してください。次に、 'Map.Entry ' – ifly6

+0

を使って繰り返します。正確に比較したいものを説明してください。 –

+0

@NicolasFilotto、map(1)のデータをmap(2)、map(2)をmap(3)、そして最後にmap (3)with map(1) – user3872094

答えて

1

このコードはMapのエントリーセットを取得します。次に、そのセット全体を反復処理し、キーと値をカンマとタブ文字で区切って出力します。 entry.getValue()List<String>を返しますので、連結のためにStringに変換する必要があります。

for (Map.Entry<String, List<String>> entry : map.entrySet()) { 
    System.out.println(entry.getKey() + ", \t" + entry.getValue().toString()); 
} 

はまた、一般的にはListを宣言するときArrayListの代わりにListを使用することを言います。このようにして、多形性が保持されます。比較に関して、あなたはあなたが比較しようとしているものが不明であるので、私は本当にその答えを与えることはできません。

+0

こんにちは@ ifly6、私はこのタイプの不一致を取得します:要素型のオブジェクトからMap.Entry > ' – user3872094

+0

を変換することはできませんマップマップ=新しいHashMap >() Map > map = new HashMap <>(); ' – ifly6

0

イテレータは、インデックスと同様の役割を果たします。

List<String> list1 = new ArrayList<>(); 
Map<String, List<String>> map = new HashMap<>(); 

インターフェースのような変数を指定し、オープン特定の実装クラスを残しすなわち:次のように書くためのより従来少ないタイピングであるところで

Iterator<Map.Entry<String, ArrayList<String>> iter1 = map.entrySet().iterator(); 
Iterator<Map.Entry<String, ArrayList<String>> iter2 = map.entrySet().iterator(); 

while (iter1.hasNext() || iter2.hasNext()) { 
    ... 
    if (iter1.hasNext()) { 
     entry1 = iter1.next(); 
    } 
} 

。メソッドパラメータにも適しています。

+0

ちょうどタイプイン、' Internator'。 – ifly6

+0

@ ifly6修正済み、うーん、internator。 –

+0

たぶん、インターンのもの? :P – ifly6

関連する問題