> Java > java지도 시간 > 본문

4가지 주요 지도 구현 클래스

(*-*)浩
풀어 주다: 2019-08-30 16:22:41
앞으로
4019명이 탐색했습니다.

Map은 키-값 쌍의 컬렉션 인터페이스입니다. 구현 클래스에는 주로 HashMap, TreeMap, Hashtable 및 LinkedHashMap 등이 포함됩니다. 4가지의 차이점은 다음과 같습니다(간단한 소개):

4가지 주요 지도 구현 클래스

HashMap: 우리가 가장 일반적으로 사용하는 Map으로, HashMap의 값은 순서가 없으며 키의 HashCode에 따라 구현됩니다. HashCode 값은 데이터를 저장하는 데 사용되며 키에 따라 해당 값을 직접 얻을 수 있으며 빠른 액세스 속도를 갖습니다. HashMap은 한 레코드의 키 값만 Null이 되도록 허용합니다(여러 레코드를 덮어쓰게 됨). 여러 레코드의 값이 Null이 되도록 허용합니다. 비동기식.

TreeMap: 키에 따라 저장하는 레코드를 정렬할 수 있습니다. 기본값은 오름차순으로 정렬하는 것입니다. 또한 Iterator를 사용하여 TreeMap을 탐색할 때 얻은 레코드가 정렬됩니다. TreeMap은 키 값이 null이 되는 것을 허용하지 않습니다. 비동기식.

Hashtable: HashMap과 유사하지만 차이점은 키나 값이 null이 될 수 없다는 것입니다. 즉, 스레드 동기화를 지원합니다. 즉, 언제든지 하나의 스레드만 Hashtable에 쓸 수 있으며 이로 인해 Hashtale도 기록됩니다. 해시 테이블만 Dictionary 추상 클래스에서 상속됩니다. hashMap과 treeMap은 모두 LinkedHashMap 추상 클래스에서 상속됩니다.

LinkedHashMap: Iterator를 사용하여 LinkedHashMap을 순회하는 경우 먼저 얻은 레코드가 순회 중에 HashMap보다 먼저 삽입됩니다. 키와 값은 모두 비어 있고 비동기적으로 허용됩니다.

상식:

컬렉션 및 맵 컬렉션은 객체에서 상속됩니까?

아니요, 둘 다 인터페이스입니다. Object는 클래스입니다. 어떻게 Object에서 상속받을 수 있습니까? 자세한 내용은 java.util 아래의 특정 인터페이스를 참조하세요.

2. 지도 정렬

TreeMap

TreeMap은 기본적으로 정렬 방법을 변경해야 하는 경우 비교기인 Comparator를 사용해야 합니다.

Comparator는 컬렉션 개체 또는 배열을 정렬할 수 있는 비교기 인터페이스입니다. 이 인터페이스의 공개 비교(T o1, To2) 메서드를 구현하면 이 메서드는 주로 첫 번째 매개 변수 o1을 기반으로 합니다. o2보다 크거나 같은 경우 각각 음의 정수, 0 또는 양의 정수를 반환합니다.

public class TreeMapTest {
    public static void main(String[] args) {
        Map<String, String> map = new TreeMap<String, String>(
                new Comparator<String>() {
                    public int compare(String obj1, String obj2) {
                        // 降序排序
                        return obj2.compareTo(obj1);
                    }
                });
        map.put("c", "ccccc");
        map.put("a", "aaaaa");
        map.put("b", "bbbbb");
        map.put("d", "ddddd");

        Set<String> keySet = map.keySet();
        Iterator<String> iter = keySet.iterator();
        while (iter.hasNext()) {
            String key = iter.next();
            System.out.println(key + ":" + map.get(key));
        }
    }
}
로그인 후 복사

위의 예는 TreeMap의 키 값을 기준으로 정렬했지만 때로는 TreeMap의 값을 기준으로 정렬해야 하는 경우도 있습니다. 값을 정렬하려면 지정된 비교기에 의해 생성된 순서에 따라 지정된 목록을 정렬하는 Collections의 sort(List list, Comparator c) 메서드를 사용해야 합니다. 그러나 전제 조건이 있습니다. 즉, 제공된 비교기에 따라 모든 요소를 ​​비교할 수 있어야 합니다. 다음과 같습니다.

public class TreeMapTest {
    public static void main(String[] args) {
        Map<String, String> map = new TreeMap<String, String>();
        map.put("d", "ddddd");
        map.put("b", "bbbbb");
        map.put("a", "aaaaa");
        map.put("c", "ccccc");

        //这里将map.entrySet()转换成list
        List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet());
        //然后通过比较器来实现排序
        Collections.sort(list,new Comparator<Map.Entry<String,String>>() {
            //升序排序
            public int compare(Entry<String, String> o1,
                    Entry<String, String> o2) {
                return o1.getValue().compareTo(o2.getValue());
            }

        });

        for(Map.Entry<String,String> mapping:list){ 
               System.out.println(mapping.getKey()+":"+mapping.getValue()); 
          } 
    }
}
로그인 후 복사

우리는 모두 HashMap 값입니다. 순서가 없습니다. 키의 HashCode에 따라 구현됩니다. 정렬되지 않은 HashMap에 대한 정렬을 어떻게 구현합니까? TreeMap의 값 정렬을 참조하면 HashMap의 정렬도 구현할 수 있습니다.

아아아아

위 내용은 4가지 주요 지도 구현 클래스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿