2016-08-10 2 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); 
} 

을 사용하여 수행 할 수 있다는 것을 알고하지만 한 번에 두 값을 비교하고 그에 따라 작동해야합니다. size 및 루프를 사용할 수 있는지 알고 싶습니다.

감사

+2

'map.entrySet()'으로 변경하십시오. 그런 다음'Map.Entry ' – ifly6

+0

을 사용하여 반복하십시오. 정확하게 비교하고자하는 것을 설명하십시오. –

+0

@ NicolasFilotto, map (1)의 데이터를 map (2), map (2), map (3) (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

변환 할 수 없습니다.'Map map = new HashMap >();' Map > map = new HashMap <>(); ' – ifly6

0

반복기는 색인과 비슷한 역할을 수행 할 수 있습니다. 그런데

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(); 
    } 
} 

은 다음과 같이 쓸 타이핑보다 덜 통상적이다

인터페이스와 같은 변수를 지정하고, 오픈 특정 구현 클래스를두고있다
List<String> list1 = new ArrayList<>(); 
Map<String, List<String>> map = new HashMap<>(); 

. 메서드 매개 변수에도 이상적입니다.

+0

그냥 오타,'Internator'. – ifly6

+0

@ ifly6 corrected, hmm, internator. –

+0

어쩌면 인턴을 할 수 있을까요? : P – ifly6

관련 문제