HashSet과 HashMap의 차이점은 무엇입니까?
HashSet
중복 값을 허용하지 않는다는 사실 외에도 HashMap
와 HashSet
? 의 차이점은 무엇 입니까?
나는 현명한 구현을 의미합니까? 둘 다 해시 테이블 을 사용 하여 값을 저장 하기 때문에 약간 모호 합니다.
그것들은 완전히 다른 구성입니다. 의 HashMap
구현입니다 Map
. 지도 키를 값에 매핑합니다. 키 조회는 해시를 사용하여 발생합니다.
반면에 a HashSet
는의 구현입니다 Set
. 설정은 집합의 수학적 모델에 맞게 설계되었습니다. 언급했듯이 A HashSet
는 HashMap
구현을 지원하기 위해 a 를 사용합니다 . 그러나 완전히 다른 인터페이스를 구현합니다.
Collection
자신의 목적에 가장 적합한 것이 무엇인지 찾고 있다면 이 자습서 는 좋은 출발점입니다. 실제로 무슨 일이 일어나고 있는지 알고 싶다면 그 책 도 있습니다.
HashSet은 집합입니다 (예 : {1,2,3,4,5}).
HashMap은 키-> 값 (키 대 값) 맵입니다 (예 : {a-> 1, b-> 2, c-> 2, d-> 1}).
위의 예제에서 HashMap에는 중복 키가 없어야하지만 중복 값이있을 수 있습니다.
HashSet에는 중복 요소가 없어야합니다.
해시 세트
- HashSet 클래스는 Set 인터페이스를 구현합니다.
- HashSet에는 객체 (요소 또는 값)를 저장합니다. 예를 들어 문자열 요소의 HashSet이있는 경우 HashSet 요소 집합을 나타낼 수 있습니다. {“Hello”,“Hi”,“Bye”,“Run”}
- HashSet은 중복 요소를 허용하지 않으므로 HashSet에 중복 값을 저장할 수 없습니다.
- HashSet은 단일 null 값을 가질 수 있습니다.
HashSet이 동기화되지 않았으므로 명시 적으로 동기화하지 않는 한 스레드 안전 작업에 적합하지 않습니다. [유사]
add contains next notes HashSet O(1) O(1) O(h/n) h is the table
해시 맵
- HashMap 클래스는 Map 인터페이스를 구현합니다.
- HashMap은 키 및 값 쌍을 저장하는 데 사용됩니다. 즉, 키와 값의 매핑을 유지합니다 (HashMap 클래스는 동기화되지 않고 null을 허용한다는 점을 제외하고는 Hashtable과 거의 동일합니다). 정수 키와 문자열 유형 값이있는 경우 HashMap 요소를 나타낼 수있는 방법입니다. 예 : {1->”Hello”, 2->”Hi”, 3->”Bye”, 4->”Run”}
- HashMap은 중복 키를 허용하지 않지만 중복 값을 허용합니다.
- HashMap은 단일 널 키와 임의의 수의 널 값을 허용합니다.
HashMap이 동기화되지 않았으므로 명시 적으로 동기화하지 않는 한 스레드 안전 작업에 적합하지 않습니다. [유사]
get containsKey next Notes HashMap O(1) O(1) O(h/n) h is the table
자세한 내용은 이 기사 를 참조하십시오 .
두 이름이 모두 Hash로 시작한다는 것은 정말 부끄러운 일입니다 . 그것은 그들 중 가장 중요한 부분입니다. 중요한 부분은 다른 사람들이 지적했듯이 해시 - 집합 및 지도 뒤에옵니다 . 그것들 각각 은 순서가없는 컬렉션 인 세트 와 맵 이있는 액세스가 가능한 컬렉션 인 세트입니다. 그것들은 이름에서 유래 한 해시로 구현되지만 그들의 본질은 이름의 그 부분 뒤에 숨겨져 있습니다.
그들의 이름으로 혼동하지 마십시오. 그들은 매우 다른 것들입니다.
HashSet을 사용하면 HashMap을 사용하여 키와 값을 기준으로 객체를 저장할 수있는 세트에 객체를 저장할 수 있습니다. 모든 객체 또는 저장된 객체에는 키가 있습니다.
Hashset
내부적으로 구현 HashMap
. 내부 구현을 보면 HashSet에 삽입 된 값은 HashMap에 키로 저장되며 값은 Object 클래스의 Dummy 객체입니다.
HashMap과 HashSet의 차이점은 다음과 같습니다.
HashMap
키 값 쌍을 포함하며 get 메소드가 없으므로 매번 HashSet을 반복해야하므로 키로 각 값에 액세스 할 수 있습니다.HashMap
Map 인터페이스를 구현하고 하나의 null 값을 키로 허용하고 여러 null 값을 값으로 허용합니다 .SetHashSet
인터페이스 를 구현하는 경우 하나의 null 값만 허용하고 중복 된 값은 허용하지 않습니다. HashSet은 HashMap을 내부적으로 구현합니다.HashSet
그리고HashMap
반복하면서 삽입의 순서를 유지하지 않습니다.
이름에서 알 수 있듯이 HashMap 은 연관 맵 (키에서 값으로 매핑)이며 HashSet 은 Set 입니다.
A HashMap
는 모든 유형의 사용자 정의 키로 인덱싱 된 객체를 추가, 가져 오기, 제거하는 것입니다.
A HashSet
는 요소를 추가하고, 요소를 제거하고, 해시를 비교하여 요소가 있는지 확인하는 것입니다.
따라서 HashMap에는 요소가 포함되며 HashSet은 해시를 기억합니다.
차이점 : 계층 구조와 관련하여 : HashSet은 Set을 구현합니다. HashMap은 Map을 구현하고 키와 값의 매핑을 저장합니다.
데이터베이스와 관련하여 HashSet 및 HashMap을 사용하면 각각의 중요성을 이해하는 데 도움이됩니다.
HashSet : 일반적으로 고유 한 컬렉션 개체를 저장하는 데 사용됩니다. 예 :
(Item이 많은 입찰 을 가짐 ) HashMap : 키를 값에 매핑하는 데 사용됩니다. 값이 null이거나 모든 Object 일 수 있습니다. / 객체의 목록입니다 (자체 자체입니다).
Java에서 HashSet과 HashMap의 차이점
1) First and most significant difference between HashMap and HashSet is that HashMap is an implementation of Map interface while HashSet is an implementation of Set interface, which means HashMap is a key value based data-structure and HashSet guarantees uniqueness by not allowing duplicates.In reality HashSet is a wrapper around HashMap in Java, if you look at the code of add(E e) method of HashSet.java you will see following code :
public boolean add(E e)
{
return map.put(e, PRESENT)==null;
}
where its putting Object into map as key and value is an final object PRESENT which is dummy.
2) Second difference between HashMap and HashSet is that , we use add() method to put elements into Set but we use put() method to insert key and value into HashMap in Java.
3) HashSet allows only one null key, but HashMap can allow one null key + multiple null values.
That's all on difference between HashSet and HashMap in Java. In summary HashSet and HashMap are two different type of Collection one being Set and other being Map.
Differences between HashSet and HashMap in Java
HashSet internally uses HashMap to store objects.when add(String) method called it calls HahsMap put(key,value) method where key=String object & value=new Object(Dummy).so it maintain no duplicates because keys are nothing but Value Object.
the Objects which are stored as key in Hashset/HashMap should override hashcode & equals contract.
Keys which are used to access/store value objects in HashMap should declared as Final because when it is modified Value object can't be located & returns null.
A HashSet is implemented in terms of a HashMap. It's a mapping between the key and a PRESENT object.
A HashSet uses a HashMap internally to store its entries. Each entry in the internal HashMap is keyed by a single Object, so all entries hash into the same bucket. I don't recall what the internal HashMap uses to store its values, but it doesn't really matter since that internal container will never contain duplicate values.
EDIT: To address Matthew's comment, he's right; I had it backwards. The internal HashMap is keyed with the Objects that make up the Set elements. The values of the HashMap are an Object that's just simply stored in the HashMap buckets.
HashMap
is a Map
implementation, allowing duplicate values but not duplicate keys.. For adding an object a Key/Value pair is required. Null Keys and Null values are allowed. eg:
{The->3,world->5,is->2,nice->4}
HashSet
is a Set
implementation,which does not allow duplicates.If you tried to add a duplicate object, a call to public boolean add(Object o)
method, then the set remains unchanged and returns false
. eg:
[The,world,is,nice]
you pretty much answered your own question - hashset doesn't allow duplicate values. it would be trivial to build a hashset using a backing hashmap (and just a check to see if the value already exists). i guess the various java implementations either do that, or implement some custom code to do it more efficiently.
Basically in HashMap, user has to provide both Key and Value, whereas in HashSet you provide only Value, the Key is derived automatically from Value by using hash function. So after having both Key and Value, HashSet can be stored as HashMap internally.
HashSet and HashMap both store pairs , the difference lies that in HashMap you can specify a key while in HashSet the key comes from object's hash code
HashMaps
allow one null key and null values. They are not synchronized, which increases efficiency. If it is required, you can make them synchronized using Collections.SynchronizedMap()
Hashtables
don't allow null keys and are synchronized.
HashMap is a implementation of Map interface HashSet is an implementation of Set Interface
HashMap Stores data in form of key value pair HashSet Store only objects
Put method is used to add element in map Add method is used to add element is Set
In hash map hashcode value is calculated using key object Here member object is used for calculating hashcode value which can be same for two objects so equal () method is used to check for equality if it returns false that means two objects are different.
HashMap is faster than hashset because unique key is used to access object HashSet is slower than Hashmap
참고URL : https://stackoverflow.com/questions/2773824/difference-between-hashset-and-hashmap
'Programing' 카테고리의 다른 글
gulp로 디렉토리를 재귀 적으로 복사하는 방법은 무엇입니까? (0) | 2020.06.04 |
---|---|
Express.js에서 next ()를 사용하여 다음 미들웨어에 변수 전달 (0) | 2020.06.04 |
Python-단어가 문자열에 있는지 확인 (0) | 2020.06.04 |
매일 오후 10시에 cron을 한 번 실행하는 방법 (0) | 2020.06.04 |
배치 스크립트에서 기다리는 방법? (0) | 2020.06.04 |