자바 에서 맵 을 옮 겨 다 니 는 여러 가지 방법 예제 및 장단 점 총화
3506 단어 자바map옮 겨 다 니 는 방법
자바 에 있 는 맵 은 여러 가지 방법 이 있 습 니 다.최초의 Iterator 부터 자바 5 가 지원 하 는 foreach,그리고 자바 8 Lambda 까지 구체 적 인 용법 과 각자 의 장단 점 을 살 펴 보 겠 습 니 다.
맵 을 초기 화 합 니 다.
public class TestMap {
public static Map<Integer, Integer> map = new HashMap<Integer, Integer>();
}
keySet values맵 의 키 나 value 만 필요 하 다 면 맵 의 키 세트 나 values 방법 을 사용 하 는 것 이 가장 편리 하 다
// KeySet key
public void testKeySet() {
for (Integer key : map.keySet()) {
System.out.println(key);
}
}
// values value
public void testValues() {
for (Integer value : map.values()) {
System.out.println(value);
}
}
keySet get(key)key 와 value 를 동시에 가 져 올 필요 가 있다 면 key 를 가 져 온 다음 map
get(key)
를 통 해 value 를 가 져 올 수 있 습 니 다.설명 이 필요 한 것 은 이 방법 이 가장 좋 은 선택 이 아니 라 일반적으로 추천 하지 않 는 다 는 것 이다.
// keySet get(key) key and value
public void testKeySetAndGetKey() {
for (Integer key : map.keySet()) {
System.out.println(key + ":" + map.get(key));
}
}
entrySetmap entry Set 를 옮 겨 다 니 면서 key 와 value 를 동시에 얻 을 수 있 습 니 다.일반적인 상황 에서 성능 이 이전 보다 좋 습 니 다.이것 도 가장 자주 사용 하 는 옮 겨 다 니 는 방법 입 니 다.
// entrySet key and value
public void testEntry() {
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue());
}
}
Iterator위의 몇 가지 foreach 는 Iterator 로 대체 할 수 있 습 니 다.사실 foreach 는 자바 5 에서 만 지원 되 고 foreach 의 쓰기 가 더욱 간결 해 보 입 니 다.
그러나 Iterator 도 장점 이 있 습 니 다.foreach 로 map 를 옮 겨 다 닐 때 크기 를 바 꾸 면 오류 가 발생 하지만 요 소 를 삭제 하 는 경우 Iterator 의 reove 방법 으로 요 소 를 삭제 할 수 있 습 니 다.
// Iterator entrySet key and value
public void testIterator() {
Iterator<Map.Entry<Integer, Integer>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<Integer, Integer> entry = it.next();
System.out.println(entry.getKey() + ":" + entry.getValue());
// it.remove();
}
}
Lambdajava 8 은 Lambda 표현 식 지원 을 제공 합 니 다.문법 이 더욱 간결 해 보이 고 key 와 value 를 동시에 얻 을 수 있 습 니 다.그러나 테스트 를 통 해 성능 이 entry Set 보다 낮 기 때문에 entry Set 방식 을 추천 합 니 다.
// Lambda key and value
public void testLambda() {
map.forEach((key, value) -> {
System.out.println(key + ":" + value);
});
}
단순 성능 테스트10 만 개의 데이터 로 간단 한 성능 테스트 를 했 는데 데이터 유형 은 Integer 이 고 map 는 HashMap 을 선택 합 니 다.
static {
for (int i = 0; i < 100000; i++) {
map.put(i, 1);
}
}
테스트 결 과 는 다음 과 같다.
KeySet: 392
Values: 320
keySet get(key): 552
entrySet: 465
entrySet Iterator:508
Lambda: 536
설명 이 필요 한 것 은 map 에 저 장 된 데이터 형식,map 의 크기,그리고 map 의 서로 다른 실현 방식 이 옮 겨 다 니 는 성능 에 영향 을 줄 수 있 기 때문에 이 테스트 결 과 는 참고 하 시기 바 랍 니 다.총결산
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 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에 따라 라이센스가 부여됩니다.