자료구조

드립이 블로그·2023년 3월 30일
0

List

Sequential, Linked의 두 가지 리스트가 존재함.

Sequential

순서대로 메모리에 연속하여 저장한다.
빈자리 없이 순서대로 저장된다.
Liked에 비해 탐색에 장점이 있다.

Liked

저장 순서에 상관 없이 링크에 의해 연결된다.
Node라는 독립된 공간을 사용해 데이터를 담는다.
노드는 데이터가 저장되는 데이터 필드, 다음 노드의 주소를 가진 링크 필드로 이루어진다.
Sequetial에 비해 탐색은 느리지만, 수정, 삭제등에 강점을 보인다.


Set

집합이라는 의미를 가진다.
순서가 없고, 중복을 허용하지 않는다.
Null을 허용한다.
순서 상관없이 특정 값이 있는지 빠르게 확인을 해야하는 경우에 사용하면 좋다.

Java에는 3가지 Set이 존재한다.

HashSet

Hashcode() 메서드를 호출해서 해시코드를 저장된 객체와 비교한다.
이후 같은 해시코드를 가진 객체가 있다면 equals() 메서드를 통해 두 객체를 비교한다.
ture일 경우 동일 객체로 판단, 저장을 하지 않는다.
값의 삭제가 필요한 경우
remove를 사용하면 Value 값만 삭제가 된다.
clear를 사용하면 전부 삭제가 된다.

TreeSet

Set 성질을 가지는 이진 탐색트리 구조이다.
HashSet보다 추가와 삭제에는 시간이 더 걸리는 대신, 정렬과 검색에서 더 높은 성능을 보인다.
레드 - 블랙 트리 구조로 구현이 되어있다.
부모 노드보다 작은 값의 노드는 왼쪽, 큰 값의 노드는 오른쪽으로 배치가 되어 트리가 한쪽으로 치우치지 않도록 균형을 맞추기 때문에 효율적이다.

LinkedHashSet

순서를 가진다는 점을 제외하면 HashSet과 동일하다.


Map

Key와 Value 값이 존재한다.
Key는 중복을 허용하지 않는 ID 값이다.
Value는 중복을 허용하는 Data 값이다.
순서를 유지하지 않는다.
가장 대표적 예시로는 주민등록번호, ID/PW 가 존재한다.

Java에는 4가지 Map이 존재한다.

HashMap

Key값을 해시함수를 실행해 저장위치를 결정한다.
해시함수를 통해 저장 위치를 알 수 있기 때문에, 추가, 삭제가 빠르고 특히 검색이 빠르다.

HashTable

위의 HashMap과 같으나 Null을 허용하지 않는다.

TreeMap

TreeSet과 비슷한 자료구조이다.
TreeSet이 값만 저장한다면, TreeMap은 Key,Value 값 전부를 저장한다.
Key값을 자동으로 오름차순으로 정렬한다.
일반적으로 성능은 HashMap이 더 우수하나, 정렬이 필요한 경우 사용하면 좋다.

LinkedHashMap

순서를 가진다는 점을 제외하면 HashMap과 동일하다.

0개의 댓글