자바 의 맵 인터페이스 및 구현 클래스

6211 단어 Java
1. 맵 인터페이스 개요
Map 인터페이스: 2 열 데이터, key - value 쌍 의 데 이 터 를 저장 합 니 다.
1. HashMap 은 Map 의 주요 실현 유형 으로서 스 레 드 가 안전 하지 않 고 효율 이 높 으 며 null 의 key 와 value 를 저장 할 수 있 습 니 다.
HashMap 바 텀: 배열 과 링크 (jdk 7) 배열, 링크 와 빨 간 검 은 나무 (jdk 8)
HashMap 의 내부 클래스: Node
static class Node implements Map.Entry{

        final int hash;
        final k key;
        v value;
        Node next;
}

HashMap 소스 코드 의 중요 한 상수:
                                                 DEFAULT_INITIAL_CAPACITY: HashMap 의 기본 용량, 16
                                                 MAXIMUM_CAPACITY: HashMap 의 최대 지 지 량, 0.75
                                                 DEFAULT_LOAD_FACTOR: HashMap 의 기본 로드 인자
                                                 TREEIFY_THRESHOLD: Bucket 에서 링크 의 길 이 는 이 기본 값 보다 크 고 빨간색 과 검은색 트 리 로 전환 합 니 다. 8
                                                  UNTREEIFY_THREHOLD: Bucket 에 저 장 된 빨간색 과 검은색 트 리 의 노드 는 이 기본 값 보다 작 으 며 링크 로 전 환 됩 니 다.
                                                  MIN_TREEIFY_CAPACITY: 통 의 노드 가 트 리 화 될 때 가장 작은 Hash 표 용량, 64
                                                  table: 원 소 를 저장 하 는 배열, 항상 2 의 N 차 멱
                                                  entry Set: 구체 적 인 요 소 를 저장 하 는 집합
                                                  size: HashMap 에 저 장 된 키 쌍 의 수량
                                                  modCount: HashMap 확장 및 구조 변경 횟수
                                                  threshold: 확장 임계값 은 용량 충전 인자 와 같 습 니 다. 12.
                                                 loadFactor: 충전 인자
2. LinkedHashMap: HashMap 의 하위 클래스 로 맵 요 소 를 옮 겨 다 닐 때 추 가 된 순서에 따라 옮 겨 다 닐 수 있 도록 합 니 다. 빈번 한 옮 겨 다 니 기 동작 에 대한 집 니 다.                                  행 효율 이 HashMap 보다 높다.
                       원인: 기 존의 HashMap 하부 구 조 를 바탕 으로 한 쌍 의 지침 을 추가 하여 앞의 요소 와 뒤의 요 소 를 가리킨다.
LinkedHashMap 의 내부 클래스: Entry
static class Entry extends HashMap.Node{
        Entry before,after;//             
        Entry(int hash,k key,v value,Node next){
           super(hash,key,value,next);
}
}

3. TreeMap: 추 가 된 key - value 에 따라 정렬 하여 정렬 을 할 수 있 도록 합 니 다. 이때 key 의 자 연 스 러 운 정렬 이나 맞 춤 형 정렬 을 고려 합 니 다.1 층 에 서 는 붉 은 검 은 나 무 를 사용한다.
                    TreeMap 에 key - value 쌍 을 추가 합 니 다. key 는 같은 클래스 에서 만 든 대상 이 어야 합 니 다. key 에 따라 정렬 되 어야 하기 때 문 입 니 다.
4. Hashtable 은 오래된 실현 류 로 서 스 레 드 가 안전 하고 효율 이 낮 으 며 null 의 key 와 value 를 저장 할 수 없습니다.밑바닥 은 모두 해시 표 구 조 를 사용 하여 조회 속도 가 빠르다.
5. Properties: Hashtable 의 하위 클래스 로 설정 파일 을 처리 하 는 데 자주 사 용 됩 니 다.key 와 value 는 모두 String 형식 입 니 다.데 이 터 를 액세스 할 때 setProperty (String key, String value) 와 getProperty (String key) 를 사용 하 는 것 을 권장 합 니 다.
Properties pros = new Properties();
pros.load(new FileInputStream("jdbc.properties"));
String user = pros.getProperty("user");
System.out.println(user);

 
2. 맵 구조의 이해
Map 의 key: 무질서 하고 중복 되 지 않 습 니 다. set 로 모든 key 를 저장 합 니 다.  --->key 가 있 는 클래스 는 equals () 와 hashCode () 를 다시 써 야 합 니 다. (HashMap 을 예 로 들 면)
Map 의 value: 무질서 합 니 다.  중복 가능, Collection 을 사용 하여 모든 value 를 저장 합 니 다.value
 
있 는 클래스 는 equals () 를 다시 써 야 합 니 다.
키 쌍: key - value 는 Entry 대상 을 구성 합 니 다.
Map 의 Entry: 무질서 합 니 다. 중복 할 수 없습니다. Set 를 사용 하여 모든 Entry 를 저장 합 니 다.
3. Map 인터페이스의 상용 방법
  • 추가, 삭제, 수정 작업
  • Object put (Object key, Object value): 지정 한 key - value 를 현재 map 대상 에 추가 하거나 수정 합 니 다.
    void puutAll (Map m): m 의 모든 key - value 를 현재 map 에 저장 합 니 다.
    Object remove (Object key): 지정 한 key - value 쌍 을 제거 하고 value 를 되 돌려 줍 니 다.
    void clear (): 현재 맵 의 모든 데 이 터 를 삭제 합 니 다.
     Map map = new LinkedHashMap();
            map.put(123,"AA");
            map.put("12","BB");
            map.put(3,"CC");
            map.put(6,4);
            System.out.println(map);
            Map map1 = new LinkedHashMap();
            map1.put(8,"CC");
            map1.put(9,0);
            map.putAll(map1);
            System.out.println(map);
           Object value =  map.remove("CC");
            System.out.println(map);
            System.out.println(value);
            map1.clear();
            System.out.println(map1.size());
  • 요소 조회 작업
  • Object get (Object key): 현재 집합 요 소 를 가 져 옵 니 다.
    boolean containsKey (Object key): 지정 한 key 를 포함 하 는 지 여부
    boolean contains Value (Object value): 지정 한 value 를 포함 하 는 지 여부
    int size (): map 의 key - value 쌍 의 개 수 를 되 돌려 줍 니 다.
    boolean IsEmpty (): 현재 맵 이 비어 있 는 지 판단 하기
    boolean equals (Object obj): 현재 map 와 매개 변수 대상 obj 가 같은 지 판단 합 니 다.
     Map map2 = new HashMap();
            map2.put(123,"AA");
            map2.put("12","BB");
            map2.put(3,"CC");
            map2.put(6,4);
            Object obj = map2.get(6);
            System.out.println(obj);
            boolean isExist = map2.containsKey("12");
            System.out.println(isExist);
           System.out.println( map2.containsValue(4));
           boolean bool = map2.equals(map);
           System.out.println(bool);
  • 원 보기 조작 방법
  • Set keyset (): 모든 key 로 구 성 된 Set 집합 을 되 돌려 줍 니 다.
    Collection values (): 모든 value 로 구 성 된 Collection 집합 을 되 돌려 줍 니 다.
    Set entry Set (): 모든 key - value 로 구 성 된 Set 집합 을 되 돌려 줍 니 다.
     Map map3 = new HashMap();
            map3.put(123,"AA");
            map3.put("12","BB");
            map3.put(3,"CC");
            map3.put(6,4);
           //  key :keySet()
            Set set = map.keySet();
            Iterator iterator = set.iterator();
            while (iterator.hasNext()){
                System.out.println(iterator.next());
            }
            //     value
            Collection val = map3.values();
            for (Object ob : val){
                System.out.println(ob);
            }
            //     
            Set se = map3.entrySet();
            Iterator iterator1 = set.iterator();
            while (iterator1.hasNext()){
                Object o = iterator1.next();
                Map.Entry entry = (Map.Entry)o;//se        entry
                System.out.println(entry.getKey() +"dsdd" +entry.getValue() );
            }

    좋은 웹페이지 즐겨찾기