본문 바로가기
Java&Spring

Java_Hash

by JINJINC 2022. 8. 4.
728x90
반응형

 

HashMap

● HashMap은 키(key)와 값(value)을 묶어서 하나의 데이터(entry)로 저장한다는 특징

해싱(hashin)을 사용하기 때문에 많은 양의 데이터를 검색하는데 있어서 뛰어난 성능을 보인다.

Entry[] table;
class Entry{
	Object key;
    Object value;
    }

HashMap 은 키와 값을 각각 Object 타입으로 저장하지만, 키는 주로 String 을 대문자 또는 소무낮로 통일해서 사용하곤 합니다. 

HashMap method 

- map.clear(); : 해시맵에 저장된 모든 객체를 제거 

- map.clone(); : 해시맴을 복제해서 반환

- map.containsKey(Object key); :  지정된 키가 포함되어있는지 알려준다(boolean type)

- map.containsValue(Object key); : 지정된 값이 포함되어있는지 알려준다(boolean type)

- Set entrySet() map.entrySey(); : 해시맵에 저장된 키와 값을 엔트리(키와 값의 결합)의 현태로 set에 저장해서 반환

- map.get(); : 지정된 키와 값을 반환, 못찾으면 null값을 반환한다 

- map.getOrDefault(Object key, Object defaultvalue); : 지정된 키와 값을 반환한다. 키를 못찾으면, 기본값으로 지정된 객체를 반환

- map.isEmpty(); : 해시맵이 비어있는지 알려준다.

- map.keySet(); : 해시맴에 저장된 모든 키가 저장된 set을 반환

- map.put(Object key, Object value); : 지정된 키와 값을 해시맵에 저장

- map.putAll(map m); : 저장된 모든 요소를 해시맵에 저장

- map.remove(Object key); : 해시맵에 지정된 키로 저장된 값을 제거

- map.replace(Object key, Object value); : 지정된 키의 값을 지정된 객체로 대체 

- map.replace(Object key, Object oldvalue, Object newValue); : 지정된 키와 객체가 모두 일치하는 경우, 새로운 객체로 대체

- map.size(); : 해시맵에 저장된 요소의 개수를 반환

- map.values(); : 해시맵에 저장된 모든 값을 컬렉션의 형태로 반환

 

※해싱이란 해시함수(hash function)를 이용해서 데이터를 해시테이블에 저장하고 검색하는 기법을 말한다. 해시함수는 데이터가 저장되어 있는 곳을 알려 주기 때문에 다량의 데이터 중에서도 원하는 데이터를 빠르게 찾을 수 있다. 

해싱을 구현한 컬렉션 클래스로 HashSet, HashMap, Hashtable등이 있다. 

저장할 데이터의 키를 해시함수에 넣으면 배열의 한 요소를 얻게되고, 다시 그 곳에 연결되어 있는 링크드 리스트에 저장하게된다. 

 

● HashSet 

HashSet은 set인터페이스를 구현한 가장 대표적인 컬렉션이며, set인터페이스의 특징대로  HashSet은 중복된 요소를 저장하지 않는다.  hashset 은 저장순서를 유지하지 않으므로 저장순서를 유지하고자 한다면 LinkedHashSet을 사용한다. 

 

HashSet

생성자, 메서드 설명
HashSet() HashSet 객체를 생성한다.
HashSet(Collection c) 주어진 컬렉션을 포함하는 hashSet객체를 생성한다.
HashSEt(int initialCapacity) 주어진 값을 초기용량으로하는 hashSet객체를 생성한다.
HashSet(int initialCapacity, float loadFactor) 초기용량과 load factor 를 지정한느 생성자
boolean add(Object o) 새로운 객체를 저장한다.
boolean addAll(Collection c) 주어진 컬렉션에 저장된 모든 객체들을 추가한다(합집합)
void clear() 저장된 모든 객체를 삭제한다.
Object clone() HashSet을 복제해서 반환한다(얕은 복사)
boolean contains(Object o) 지정된 객체를 포함하고 있는지 알려준다.
boolean containsAll(Collection c) 주어진 컬렉션에 저장된 모든 객체들을 포함하고 있는지 알려준다. 
boolean isEmpty()  hashSet이 비어있는지 알려준다.
Iterator iterator() Iterator를 반환한다.
boolean remove(Object o) 지정된 객체를 HashSet에서 삭제한다.(성공하면  true, 실패하면  false)
boolean remobeAll(Collection c) 주어진 컬렉션에 저장된 모든 객체와 동일한 것들들 hashSet에서 모두 삭제한다.
boolean retainAll(Collection c) 주어진 컬렉션에 저장된 객체와 동일한 것만 남기고 삭제한다. 
int size() 저장된 객체의 개수를 반환한다.
Object[] toArray() 저장된 객체들을 객체배열의 형태로 반환한다.
Object[] toArray(Object[] a) 저장된 객체들을 주어진 객체배열을 담는다. 

HashSet에 이미 같은 객체가 있으면 중복윽로 간주하고 저장하지 않는다. 그리고 작업이 실패했다는 의미로 false를 반환한다. 객체의 변수타입이 다르면 중복으로 간주하지 않는다. 

 

 

● TreeSet

TreeSet : 이진 검색트리라는 자료구조의 형태로 데이터를 저장하는 컬렉션 클래스이다. 이진검색 트리는 정렬, 검색, 범위검색에 높은 성능을 보이는 자료구조이며. treeSet은 이진 검색 트리의 성능을 향상시킨 레드블랙트리로 구현되어있다.

      set 인터페이스를 구현했으므로 중복된 데이터의 저장을 허용하지 않으며 정렬된 위치에 저장하므로 저장순서를 유지하지도 않는다. 

 

이진 검색트리(binary search tree)
 - 모든 노드는 최대 두개의 자식노드를 가질 수 있다.
 - 왼쪽 자식노드의 값은 부모노드의 값보다 작고 오른쪽자식노드의 값은 부모노드의 값보다 커야한다.
 - 노드의 추가 삭제에 시간이 걸린다.(순차적으로 저장하지 않으므로)
 - 검색(범위검색)과 정렬에 유리하다.
 - 중복된 값을 저장하지 못한다. 

 

728x90
반응형

'Java&Spring' 카테고리의 다른 글

Java_Arrays  (0) 2022.08.04
Java_ interface  (0) 2022.08.04
JSP_day04[Response status code]  (0) 2022.07.19

댓글