자바 집합 류 의 사용 소감
16540 단어 JAVA 배 움 의 길자바hashmap
프롤로그
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 가 실현 하 는 것 입 니 다.
총결산
부족 한 점 이 있 으 면 잘 부탁드립니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
【eclipse】같은 파일을 2개 열고 싶다【에디터의 분할】「이런 것은 다른 클래스로 나누어야 한다!」라든지 있다고는 생각합니다만. 실제로 실무 속에서 프로그램을 쓰고 있으면, 이런 소스에 눈에 걸리는 일도 적지 않을까···. 그건 그렇고, 내 노트북에서 이렇게 보입니다 네...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.