지도 소개
키를 값의 객체에 매핑하십시오. 맵에는 중복 키를 포함 할 수 없습니다. 각 키는 최대 하나의 값에만 매핑 될 수 있습니다. 이 인터페이스는 인터페이스가 아닌 전적으로 추상 클래스 인 사전 클래스를 대체합니다.
맵 인터페이스는 키 세트, 값 세트 또는 키 값 매핑 관계 세트 형식으로 맵의 내용을 볼 수있는 세 가지 수집보기를 제공합니다. 매핑 순서는 반복자가 맵의 수집보기에서 요소를 반환하는 순서로 정의됩니다. 일부 매핑 구현은 Treemap 클래스와 같은 주문을 명시 적으로 보장합니다. 다른 사람들은 해시 맵 클래스와 같은 주문을 보장하지 않습니다.
참고 : 맵핑 키로 변한 물체를 사용할 때는 추가주의를 기울여야합니다. 객체가 맵의 키 인 경우, 객체의 값이 평등 비교에 영향을 미치는 방식으로 변경되면 맵의 동작이 불확실합니다. 이것이 금지하는 특별한 경우는지도가 자체가 키로 포함되지 않기 때문입니다. 맵은 자체를 값으로 포함시킬 수 있지만 조심하십시오. 평등 및 해시 코드 방법의 정의는 더 이상 그러한 맵에서 명시 적이 아닙니다.
지도 인터페이스 :
맵은 키에서 값으로의 매핑을 제공합니다. 맵에는 동일한 키를 포함 할 수 없으며 각 키는 하나의 값 만 매핑 할 수 있습니다. 맵 인터페이스는 컬렉션의 세 가지 유형의보기를 제공합니다. 지도의 내용은 일련의 주요 컬렉션 세트, 가치 컬렉션 세트 또는 키 값 매핑 세트로 간주 될 수 있습니다.
해시 가능한 클래스
Hashtable은 맵 인터페이스를 상속하고 키 값 매핑으로 해시 테이블을 구현합니다. 모든 비 널 객체는 키 또는 값으로 사용할 수 있습니다.
put (키, 값)을 사용하여 데이터를 추가하고 Get (키)를 사용하여 데이터를 검색하십시오. 이 두 기본 작업의 시간 간접비는 일정합니다. Hashtable은 초기 용량 및로드 계수 매개 변수를 통해 성능을 조정합니다. 일반적으로 기본 부하 계수 0.75는 시간과 공간 밸런스를 더 잘 달성 할 수 있습니다. 하중 계수를 늘리면 공간을 절약 할 수 있지만 해당 검색 시간이 증가하여 Get 및 Put과 같은 작업에 영향을 미칩니다.
해시 테이블을 사용하는 간단한 예는 다음과 같습니다. 1, 2 및 3을 해시 테이블에 넣고 키는 각각 "하나", "2", "세 가지"입니다.
HASHTable Numbers = New Hashtable (); 숫자 .put ( "One", New Integer (1)); 숫자 .put ( "2", 새 정수 (2)); 숫자 .put ( "Three", New Integer (3));
2와 같은 숫자를 꺼내려면 해당 키를 사용하십시오.
정수 n = (정수) numbers.get ( "2"); System.out.println ( "2 =" + N);
키로서의 객체는 해시 함수를 계산하여 해당 값의 위치를 결정하기 때문에 키로 객체는 해시 코드를 구현해야하며 메소드와 동일합니다. 해시 코드 및 메소드와 동일합니다. 루트 클래스 객체에서 상속됩니다. 사용자 정의 클래스를 키로 사용하는 경우 매우 조심하십시오. 해시 함수의 정의에 따르면, 두 객체가 동일하다면, 즉 obj1.equals (obj2) = true 인 경우 해시 코드는 동일해야하지만 두 객체가 다르면 해시 코드가 다를 수 없습니다. 두 개의 다른 물체의 해시 코드가 동일하면,이 현상을 충돌이라고합니다. 충돌은 해시 테이블 작동의 시간 간접비를 증가시킵니다. 따라서 해시 테이블의 작동 속도를 높이기 위해 hashcode () 메소드를 정의하십시오.
동일한 객체에 해시 코드가 다른 경우 해시 테이블의 작업에는 예상치 못한 결과가 나타납니다 (예상 Get 메소드는 NULL을 반환합니다). 이 문제를 피하기 위해 한 가지만 기억하면됩니다. 중 하나를 작성하는 것보다 동일한 방법과 해시 코드 메소드를 다시 작성해야합니다.
Hashtable은 동기화됩니다.
해시 맵 클래스
해시 맵은 해시 테이블과 유사하며, 차이점은 해시 맵이 비동기식이며 널 (예 : null 값 및 널 키)을 허용한다는 것입니다. 그러나 HashMap이 컬렉션으로 간주되면 (값 () 메소드가 컬렉션을 반환 할 수 있음)은 반복적 인 소기업 시간 오버 헤드가 해시 맵의 용량에 비례합니다. 따라서 반복 작업의 성능이 매우 중요하다면 해시 맵의 초기화 용량을 너무 높거나 부하 계수가 너무 낮아 지도록 설정하지 마십시오.
약한 해쉬 맵 클래스
약한 해시 맵은 키에 대한 "약한 기준"을 구현하는 개선 된 해시 맵입니다. 키가 더 이상 외부에서 참조되지 않으면 키를 GC에 의해 재활용 할 수 있습니다.
위는 Java Map 인터페이스에 대한 소개입니다. Java 프로그래밍을 배우는 학생들은 그것을 참조 할 수 있습니다.