자바 에서 맵 을 옮 겨 다 니 는 몇 가지 방법 요약
6321 단어 자바
for-each entries
。 。
Map map = new HashMap();
for (Map.Entry entry : map.entrySet()) {
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
메모:for-each 순환 은 자바 5 에 도입 되 었 기 때문에 이 방법 은 자바 5 또는 더 높 은 버 전에 만 적용 할 수 있 습 니 다.빈 맵 대상 을 옮 겨 다 니 면 for-each 순환 은 NullPointer Exception 을 던 집 니 다.따라서 옮 겨 다 니 기 전에 빈 인용 을 확인 해 야 합 니 다.방법 2.for-each 순환 에서 keys 나 values 를 옮 겨 다 닙 니 다.맵 의 키 나 값 만 필요 하 다 면 엔 트 리 셋 이 아 닌 키 세트 나 values 를 통 해 옮 겨 다 닐 수 있 습 니 다.
Map map = new HashMap();
//맵 의 키 를 옮 겨 다 니 기
for (Integer key : map.keySet()) {
System.out.println("Key = " + key);
}
//맵 의 값 옮 겨 다 니 기
for (Integer value : map.values()) {
System.out.println("Value = " + value);
}
이 방법 은 entry Set 보다 성능 적 으로 옮 겨 다 니 는 것 이 좋 습 니 다.
Map map = new HashMap();
Iterator> entries = map.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry entry = entries.next();
System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
}
일반 모드 사용 하지 않 음:
Map map = new HashMap();
Iterator entries = map.entrySet().iterator();
while (entries.hasNext()) {
Map.Entry entry = (Map.Entry) entries.next();
Integer key = (Integer)entry.getKey();
Integer value = (Integer)entry.getValue();
System.out.println("Key = " + key + ", Value = " + value);
}
방법 4.키 를 통 해 값 을 찾 아 옮 겨 다 니 기(효율 이 낮 음)
Map map = new HashMap();
for (Integer key : map.keySet()) {
Integer value = map.get(key);
System.out.println("Key = " + key + ", Value = " + value);
}
자바 구체 적 인 테스트 코드 클래스:
import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; // map public class CircleMap { public static void main(String[] args) { Map
tempMap = new HashMap (); tempMap.put("a", 1); tempMap.put("b", 2); tempMap.put("c", 3); // JDK1.4 // hashmap entrySet() System.out.println(" "); Iterator it = tempMap.entrySet().iterator(); while (it.hasNext()) { Map.Entry entry = (Map.Entry) it.next(); Object key = entry.getKey(); Object value = entry.getValue(); System.out.println("key=" + key + " value=" + value); } System.out.println(""); // JDK1.5 , For-Each // System.out.println(" "); for (Map.Entry entry : tempMap.entrySet()) { String key = entry.getKey().toString(); String value = entry.getValue().toString(); System.out.println("key=" + key + " value=" + value); } System.out.println(""); // hashmap keySet() System.out.println(" "); for (Iterator i = tempMap.keySet().iterator(); i.hasNext();) { Object obj = i.next(); System.out.println(obj);// key System.out.println("key=" + obj + " value=" + tempMap.get(obj)); } for (Iterator i = tempMap.values().iterator(); i.hasNext();) { Object obj = i.next(); System.out.println(obj);// value } System.out.println(""); // treemap keySet() System.out.println(" "); for (Object o : tempMap.keySet()) { System.out.println("key=" + o + " value=" + tempMap.get(o)); } System.out.println("11111"); // java Map map = new HashMap (); System.out .println("java Map map = new HashMap ();"); Map map = new HashMap (); Set keys = map.keySet(); Iterator iterator = keys.iterator(); while (iterator.hasNext()) { String key = iterator.next(); ArrayList arrayList = map.get(key); for (Object o : arrayList) { System.out.println(o + " "); } } System.out.println("2222"); Map mapList = new HashMap (); for (Map.Entry entry : mapList.entrySet()) { String key = entry.getKey().toString(); List values = (List) entry.getValue(); for (String value : values) { System.out.println(key + " --> " + value); } } } }
요약 키(keys)나 값(values)만 필요 하 다 면 사용 방법 2.만약 당신 이 사용 하 는 언어 버 전이 자바 5 보다 낮 거나,여러 번 에 걸 쳐 entries 를 삭제 하려 면,반드시 사용 방법 3 을 사용 해 야 합 니 다.그렇지 않 으 면 사용 방법 1.
효율 문제:
하면,만약,만약...
키 와 value 를 동시에 옮 겨 다 닐 때 키 세트 와 entry Set 방법의 성능 차 이 는 키 의 구체 적 인 상황,예 를 들 어 복잡 도(복잡 대상),이산 도,충 돌 률 등에 달 려 있다.HashMap 에서 value 를 찾 는 비용 에 달 려 있다 는 얘 기다.entry Set 에서 모든 key 와 value 를 한꺼번에 꺼 내 는 작업 은 성능 비용 이 있 습 니 다.이 손실 이 HashMap 에서 value 를 찾 는 비용 보다 적 을 때 entry Set 의 성능 장점 이 나타 납 니 다.예 를 들 어 상기 대비 테스트 에서 key 가 가장 간단 한 수치 문자열 일 때 keyset 은 오히려 효율 적 이 고 entry Set 보다 10%적 을 수 있 습 니 다.전체적으로 엔 트 리 세트 를 추천 합 니 다.키 가 간단 할 때 그 성능 은 키 세트 보다 약간 낮 을 수도 있 지만 제어 할 수 있 기 때문이다.한편,key 의 복잡 화 에 따라 entry Set 의 장점 이 뚜렷하게 나타 날 것 이다.물론,우 리 는 실제 상황 에 따라 key 만 옮 겨 다 닐 때 keyset 방법 을 선택 할 수 있 습 니 다.entry Set 은 쓸모없는 value 도 꺼 내 성능 과 공간 을 낭비 하기 때 문 입 니 다.상기 테스트 결과 에 따 르 면 keyset 은 entry Set 방법 보다 23%가 적다.value 만 옮 겨 다 닐 때 vlues 방법 을 사용 하 는 것 이 가장 좋 습 니 다.entry Set 은 keyset 방법 보다 약간 좋 습 니 다.
하면,만약,만약...
key 와 value 를 동시에 옮 겨 다 닐 때 HashMap 과 달리 entry Set 의 성능 은 keyset 보다 훨씬 높 습 니 다.이것 은 TreeMap 의 조회 효율 에 의 해 결정 된다.즉,TreeMap 에서 value 를 찾 는 비용 이 비교적 많 고 entry Set 에서 모든 key 와 value 를 한꺼번에 꺼 내 는 비용 보다 현저히 높다.따라서 TreeMap 을 옮 겨 다 닐 때 entry Set 방법 을 강력 히 추천 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.