그만큼 해시맵 그리고 해시세트 Java에서는 가장 인기 있는 컬렉션 클래스입니다. 둘 다 데이터 구조에 사용됩니다. 다음 표에서는 HashMap과 HashSet의 차이점을 설명합니다.
기초 | 해시맵 | 해시세트 |
---|---|---|
정의 | Java HashMap은 Map 인터페이스의 해시 테이블 기반 구현입니다. | HashSet은 세트입니다. 저장을 위해 해시 테이블을 사용하는 컬렉션을 생성합니다. |
구현 | HashMap 구현 지도, 복제 가능, 직렬화 가능 인터페이스 예. | HashSet 구현 설정, 복제 가능, 직렬화 가능, 반복 가능 그리고 수집 인터페이스. |
백화점 | HashMap에는 다음을 저장합니다. 키-값 쌍 . 키와 값의 매핑을 유지합니다. | HashSet에는 다음을 저장합니다. 사물 . |
중복된 값 | 그것은 허용하지 않습니다 중복 키 , 하지만 중복된 값 ~이다 허용된 . | 그것은 허용하지 않습니다 중복된 값 . |
Null 값 | 이는 다음을 포함할 수 있습니다. 단일 널 키 그리고 다중 null 값 . | 그것은 다음을 포함할 수 있습니다 단일 null 값 . |
삽입 방법 | HashMap은 놓다() HashMap에 요소를 추가하는 메서드입니다. | HashSet은 추가하다() HashSet에 요소를 추가하는 메서드입니다. |
성능 | 해시맵은 더 빠르게/ 값이 고유 키와 연결되어 있기 때문에 HashSet보다 좋습니다. | 해시셋은 더 느리게 멤버 개체는 두 개체에 대해 동일할 수 있는 해시코드 값을 계산하는 데 사용되기 때문에 HashMap과 다릅니다. |
개체 수 | 오직 하나 추가 작업 중에 개체가 생성됩니다. | 있다 둘 Put 작업 중에 생성된 객체(하나는 열쇠 그리고 하나는 값 . |
저장 메커니즘 | HashMap은 내부적으로 사용합니다. 해싱 물건을 저장하는 것. | HashSet은 내부적으로 해시맵 물건을 저장하는 물건. |
용도 | 우리가 유지하지 않을 때 항상 선호 독특함 . | 유지관리가 필요할 때 사용됩니다. 독특함 데이터. |
예 | {a->4, b->9, c->5} 어디 에이, 비, 씨 ~이다 열쇠 그리고 4, 9, 5 ~이다 가치 키와 연관되어 있습니다. | {6, 43, 2, 90, 4} 집합을 나타냅니다. |
프로그램을 통해 차이점을 이해해보자.
HashMap의 예
다음 예에서는 동일한 키와 다른 값을 가진 중복 요소를 추가하면 키의 이전 값이 새 값으로 대체됩니다.
동일한 키와 동일한 값을 가진 중복 요소를 추가하면 키-값 쌍이 두 번째로 저장되지 않습니다.
import java.util.*; public class HashMapExample { public static void main(String args[]) { //creating object of HashMap HashMap hm= new HashMap(); //adding key-value pair hm.put('John', 23); hm.put('Monty', 27 ); hm.put('Richard', 21); hm.put('Devid', 19); System.out.println('Before adding duplicate keys: '); System.out.println(hm); //adding duplicate keys hm.put('Monty', 25); //replace the Monty's previous age hm.put('Devid', 19); System.out.println('After adding duplicate keys: '); System.out.println(hm); } }
산출:
HashSet의 예
다음 예에서는 중복된 값이 HashSet에 저장되지 않고 null 값이 한 번만 저장되는 것을 볼 수 있습니다.
import java.util.*; public class HashSetExample { public static void main(String args[]) { //creating object of HashSet HashSet hs= new HashSet(); //adding values to HashSet hs.add('Java'); hs.add('Python'); hs.add('C++'); hs.add('C'); System.out.println('Before adding duplicate and null values: '); System.out.println(hs); //adding duplicate values hs.add('Python'); hs.add('C'); System.out.println('After adding duplicate values: '); System.out.println(hs); //adding null values hs.add(null); hs.add(null); System.out.println('After adding null values: '); System.out.println(hs); } }
산출: