JAVA 에서 Map 에 관 한 9 대 문제 입 니 다.
3809 단어 map
// key list
List keyList = new ArrayList(map.keySet());
// value list
List valueList = new ArrayList(map.valueSet());
// key-value list
List entryList = new ArrayList(map.entrySet());
1、Entry 통과 Map 자바 를 옮 겨 다 니 는 키 로 존재 하 는 방식 을 Map.Entry 라 고 합 니 다.Map.entry Set()는 key-value 집합 을 되 돌려 줍 니 다.이것 은 매우 효율 적 인 옮 겨 다 니 는 방식 입 니 다.
특히 JDK 1.5 이전 에는 Iterator 를 자주 사용 합 니 다.
for(Entry entry: map.entrySet()) {
// get key
K key = entry.getKey();
// get value
V value = entry.getValue();
}
2.Key 를 통 해 Map 정렬 을 하려 면 Map 의 ke 를 자주 조작 해 야 합 니 다.한 가지 방식 은 비교 기(comparator)를 통 해 )자,실현:
Iterator itr = map.entrySet().iterator();
while(itr.hasNext()) {
Entry entry = itr.next();
// get key
K key = entry.getKey();
// get value
V value = entry.getValue();
}
또 다른 방법 은 Sorted Map 을 통 해 컴 파 라 블 인 터 페 이 스 를 실현 해 야 한 다 는 것 이다.List list = new ArrayList(map.entrySet());
Collections.sort(list, new Comparator() {
@Override
public int compare(Entry e1, Entry e2) {
return e1.getKey().compareTo(e2.getKey());
}
});
3.value 에 대해 맵 을 정렬 하 는 것 은 이전 과 유사 합 니 다.코드 는 다음 과 같 습 니 다.
SortedMap sortedMap = new TreeMap(new Comparator() {
@Override
public int compare(K k1, K k2) {
return k1.compareTo(k2);
}
});
sortedMap.putAll(map);
4.static 의 상수 맵 을 초기 화 합 니 다.전체 정적 맵 을 만 들 려 고 할 때 우 리 는 다음 과 같은 두 가지 방식 이 있 고 스 레 드 가 안전 합 니 다.Test 1 에서 우 리 는 map 가 정적 이 라 고 밝 혔 지만 초기 화 할 때 우 리 는 그것 의 값 을 바 꿀 수 있 습 니 다.예 를 들 어 Test1.map.put(3,"three")와 같 습 니 다.Test 2 에서 내부 클래스 를 통 해 수정 할 수 없 는 것 으로 설정 합 니 다.Test2.map.put(3,"three")를 실행 할 때 Unsupported Operation Exception 을 던 집 니 다. 이상 하 게 당신 이 수정 하 는 것 을 금지 합 니 다.
List list = new ArrayList(map.entrySet());
Collections.sort(list, new Comparator() {
@Override
public int compare(Entry e1, Entry e2) {
return e1.getValue().compareTo(e2.getValue());
}
});
5.HashMap,TreeMap,and Hashtable 간 의 차이 점 은 Map 인터페이스 에서 모두 세 가지 실현 이 있 는데 그것 이 바로 HashMap,TreeMap,Hashtable 이다.그것들 사이 에는 각각 다른 것 이 있 으 니 상세 한 내용 은 을 참고 하 시기 바 랍 니 다. HashMap vs.TreeMap vs.Hashtable vs.LinkedHashMap 라 는 글.
6.Map 의 역방향 조 회 는 우리 가 Map 에 키 값 쌍 을 추가 한 후에 이것 은 Map 에서 키 와 값 이 일일이 대응 하 는 것 을 의미 하고 하나의 키 는 하나의 값 에 대응 하 는 것 을 의미한다.그러나 가끔 은 역방향 조회 가 필요 합 니 다.예 를 들 어 특정한 값 을 통 해 키 를 찾 아야 합 니 다.이런 데이터 구 조 는 bidirectional map 라 고 불 립 니 다.안 타 깝 게 도 JDK 는 지원 하지 않 았 습 니 다.Apache 와 Guava 는 공동으로 이러한 bidirectional map 를 제공 합 니 다.이 는 실현 과정 에서 키 와 값 이 모두 1:1 이 어야 한 다 는 관 계 를 규정 합 니 다.
7.맵 의 복사 자바 에 서 는 하나의 맵 에 대한 복 제 를 실현 할 수 있 는 많은 방법 을 제공 하지만 그 방법 들 이 항상 동기 화 되 지 는 않 습 니 다.쉽게 말 하면 하나의 맵 에 변화 가 생 겼 고 복 제 된 것 은 그대로 유지 되 었 다.다음은 비교적 효율 적 인 실현 방법 이다.
public class Test1 {
private static final Map map;
static {
map = new HashMap();
map.put(1, “one”);
map.put(2, “two”);
}
}
public class Test2 {
private static final Map map;
static {
Map aMap = new HashMap();
aMap.put(1, “one”);
aMap.put(2, “two”);
map = Collections.unmodifiableMap(aMap);
}
}
물론 복제 하 는 또 다른 방법 이 있다.그러나 우리 자바 의 원조 인 Josh Bloch 는 이런 방식 을 추천 하지 않 았 다.그 는 한 인터뷰 에서 Map 복제 에 관 한 문 제 를 말 한 적 이 있다.여러 가지 중에서 복제 방법 을 제공 했다.왜냐하면 사람들 이 확실히 필요 하기 때문이다.그러나 복 제 는 매우 한계 가 있 고 불필요 한 영향 을 미 칠 때 가 많다.원문(Copy constructor versus cloning))8.빈 맵 을 만 듭 니 다.이 맵 을 사용 할 수 없 는 맵 으로 설정 하면 다음 과 같이 실현 할 수 있 습 니 다.
4.567913.반대로 우리 가 사용 할 때 바로
Map copiedMap = Collections.synchronizedMap(map);
itxxz
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
React Native Mapbox(v10) 설치이 글에서는 React Native에서 지도를 통합하기 위한 도구로 Mapbox(v10)를 사용하는 기본 사항에 대해 알아봅니다. 나는 iOS와 Android 모두에서 완벽하게 작동하는 mapbox를 선호합니다. "...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.