2013-01-13 2 views
0

가능한 중복 : 나는 다음 코드 조각을 작성한와 해시 맵의 반복에 부착하고
How do I iterate over each Entry in a Map?
How can I iterate over a map of <String, POJO>?순회 해시 맵을 통해

. 이 코드에서

import java.util.ArrayList; 
import java.util.HashMap; 
import java.util.Iterator; 
import java.util.List; 

class demo 
{ 
    public static void main(String v[]) { 
     ArrayList<String> contactIds = new ArrayList<String>(); 
     contactIds.add("2"); 
     contactIds.add("3"); 

     HashMap names = new HashMap(); 
     names = getNames(contactIds); 

     // I want to get the total size of the hashmap - names 
     // for ex now there are 6 elements inside hashmap. 
     // How can I get that count? 

    } 


    private static HashMap getNames(ArrayList contactIds) { 
     HashMap names = new HashMap(); 
     String params = null; 
     List<String> list = new ArrayList<String>(); 
     for(int i=0; i<contactIds.size();i++) { 
      params = contactIds.get(i).toString(); 

      list.add(0,"aer-1"); 
      list.add(1,"aer-2"); 
      list.add(2,"aer-3"); 

      names.put(params,list) ; 
     } 

     return names; 
    } 
} 

, 여섯 elments 내가지도를 반복하고 총 수를 얻을 수있는 방법의 주요 방법 지금,지도 내부에있다?

감사합니다.

답변

3

JavaDoc을 살펴보십시오. 총계는 HashMap.size(),지도의 모든 값은 HashMap.values(), 키와 값의 각 쌍은 HashMap.entries()입니다.

5

귀하의 질문은 질문 - 그리고 대답 - 여기 :

How to efficiently iterate over each Entry in a Map?

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

그러나 어떻게 hashmap 내에있는 요소의 총 개수를 얻을 수 있습니까? 예를 들어 키 1과 키 2에 3 개의 요소가 추가되었습니다. 이제 전체 크기 즉 6을 원했습니다. 그것은 가능한가? – nithin

1

'지도'데이터 구조는 컬렉션 객체가 아니라 설정은 다음과 같습니다.

Map을 반복하는 가장 일반적인 방법은 기본 .entrySet 메서드를 사용하는 것입니다.

// For each loop 
for (Entry<String, String> entry : names) { 
    System.out.println(String.format("(%s, %s)", entry.getKey(), entry.getValue())); 
} 

// Iterator 
Iterator iterator = names.entrySet().iterator 
while(iterator.hasNext()){ 
    Entry entry = iterator.next() 
    System.out.println(String.format("(%s, %s)", entry.getKey(), entry.getValue())); 
} 

지도 노드의 총 개수를 확인하려면 .size() 메소드를 사용하십시오.

편집 : 당신은지도에 저장된 각 목록의 전체 크기를 원하기 때문에

, 당신은 같은 것을 할 수 있습니다.

Iterator iterator = names.entrySet().iterator 
int count = 0; 

while(iterator.hasNext()){ 
    Entry entry = iterator.next() 
    count += entry.getValue().size() 
} 
+0

하지만 어떻게 hashmap 내부에있는 요소의 총 수를 얻을 수 있습니다. 예를 들어 키 1과 키 2에 3 가지 요소가 추가되었습니다. 이제 전체 크기 즉 6을 원했습니다. 그것은 가능한가? – nithin

+0

size()라는 메소드가 없습니다 – nithin

+0

지도의 값에 어떤 데이터 구조를 사용하고 있습니까? 귀하의 코드에서 그것은 Collection 데이터 구조체 인 ArrayList처럼 보이므로 .size() 메소드를 가져야합니다. – Dan