자바 집합 류 의 사용 소감

글 목록
프롤로그
2.Collection

  • hashMap 사용 분석 원본 코드 없 음

  • 총화
    머리말
    자기 집합 학습 의 모든 내용 을 기록 한 문장
    2.컬 렉 션
    1.hashMap 사용 분석 원본 코드 없 음
    코드 는 다음 과 같 습 니 다(예시).
    public class test2 {
         
        public static void main(String[] args) {
         
            God xiaot=new God();
            xiaot.name="  ";
    
            God xiaot2=new God();
            xiaot2.name="  2";
            God xiaot3=new God();
            xiaot3.name="  2";
    
            God xiaot4=new God();
            xiaot4.name="  3";
            God xiaot5=new God();
            xiaot5.name="  4";
    
            HashMap hashMap=new HashMap();
            /**
             *      Value   key   ,map   v    
             *     equals hashcode
             */
            System.out.println("  1            ");
            hashMap.put(xiaot,1);
            xiaot.name="    ";
            System.out.println("        ");
            hashMap.put(xiaot,2);
            System.out.println(hashMap);
            System.out.println("  :           hashcode     ,(    ),          key      ,       hash          " +
                    "          key");
    
            System.out.println("  2          ");
            hashMap.put(xiaot,-1);
            System.out.println(hashMap);
            System.out.println("  :                      ,   hash           kv");
    
            System.out.println("  3           ");
            hashMap.put(xiaot2,3);
            hashMap.put(xiaot3,4);
            System.out.println(hashMap);
            System.out.println("  :            hashcode equals  ,        ,            equals  ");
    
            System.out.println("2,3      : hashcode            equals        ,      ,       ");
    
            System.out.println("  4         ");
            hashMap.put(xiaot4,5);
            hashMap.put(xiaot5,6);
            System.out.println(hashMap);
            System.out.println("  : hashcode                ,      ,    ,           equals   ");
            System.out.println("  : hashmap            (java8),  (    , hash     )" +
                    "      key-value,       ,      8   ,  map    ,0.75    ,2   ,         hashcode equals,hashset map key   ");
    
    
        }
    
        static class God{
         
            public String name="  ";
    
            @Override
            public String toString() {
         
                return "a{" +
                        "name='" + name + '\'' +
                        '}';
            }
    
            @Override
            public boolean equals(Object o) {
         
                System.out.println("  "+name+"equals");
                if (this == o) return true;
                if (o == null || getClass() != o.getClass()) return false;
                God a = (God) o;
                return Objects.equals(name, a.name);
            }
    
            @Override
            public int hashCode() {
         
                System.out.println("  "+name+"hashCode");
                return Objects.hash(name);
            }
        }
    }
    

    실행 결과
    테스트 1 같은 대상 이지 만 값 이 다 릅 니 다.하지만 이전에 저 장 된 hash 수치 위 치 는 바 뀌 지 않 습 니 다.같은 대상 은 여러 key 를 할 수 있 습 니 다.
    테스트 2 같은 대상 값 이 같 습 니 다.
    테스트 3 서로 다른 대상 이지 만 값 은 같 습 니 다.3.테스트 즉,hashcode 와 같은 대상 은 equals 를 호출 하여 같은 지 여 부 를 판단 하고 같은 것 은 덮어 쓰 며 같 지 않 으 면 추 가 됩 니 다.
    테스트 4 서로 다른 대상 의 값 이 작은 설탕 3hash Code 에 들 어가 작은 설탕 4hash Code{a{name='작은 설탕 2'}=4,a{name='작은 설탕 3'}=5,a{name='작은 설탕 4'}=6,a{name='작은 설탕 수정'}=-1,a{name='작은 설탕 수정'}=1}결론:hashcode 의 서로 다른 대상 은 완전히 추가 할 수 있 고 같은 대상 이 같 으 면 교체 된다.서로 다른 대상 이 같 으 면 equals 로 판단 합 니 다.
    전체:hashmap 는 배열 에 링크 를 추가 하고 빨 간 검 은 나무(java 8)를 추가 합 니 다.배열(분류 에 사용 되 고 hash 값 으로 위 치 를 확정 합 니 다)링크 는 key-value 를 저장 하 는 데 사 용 됩 니 다.빨 간 검 은 나 무 는 최적화 에 사 용 됩 니 다.링크 의 길 이 는 8 시 이상 바 뀌 기 때문에 map 는 무질서 합 니 다.0.75 확장 한도 값,2 배 확장 입 니 다.사용 할 때 hashcode 와 equals 를 다시 쓰 는 것 을 주의해 야 합 니 다.hashset 은 map 의 key 가 실현 하 는 것 입 니 다.
    총결산
    부족 한 점 이 있 으 면 잘 부탁드립니다.

    좋은 웹페이지 즐겨찾기