
map: Key-Value의 쌍을 저장하는 인터페이스 list: 모두 순차적으로 저장하는 자료구조 set: 중복을 허용하지 않는 자료구조
Map과 HashMap은 모두 Key-Value를 쌍으로 저장하는 자료구조입니다. 하지만 두 자료구조에는 차이점이 있습니다.
- 두개의 차이점은 인터페이스(Map)인지 아니면 인터페이스를 구현하는 클래스(HashMap)인지 여부입니다.
Map의 경우는 Key-Value의 쌍을 저장하는 인터페이스입니다.
HashMap은 Map의 인터페이스를 구현하는 클래스 중 하나입니다.
// Map은 인터페이스, HashMap은 인터페이스의 구현체
Map<String, Object> strMap = new HashMap<>();
// Map은 인터페이스, TreeMap은 인터페이스의 구현체
Map<String, Object> strTreeMap = new TreeMap<>();
// Map은 인터페이스, LinkedHashMap은 인터페이스의 구현체
Map<String, Object> strLinkedMap = new LinkedHashMap<>();
// Map은 인터페이스, ConcurrentHashMap은 인터페이스의 구현체
Map<String, Object> strCurrMap = new ConcurrentHashMap<>();
// Map은 인터페이스, Hashtable은 인터페이스의 구현체
Map<String, Object> strHashTableMap = new Hashtable<>();
| 클래스 | 설명 | 사용 예시 |
|---|---|---|
| HashMap | 해시 테이블을 사용하여 Key-Value 쌍을 저장합니다. | 일반적으로 가장 많이 사용되고 효율적으로 동작하기에 이를 사용하면 됩니다. |
| TreeMap | 레드-블랙 트리를 사용하여 Key-Value 쌍을 저장합니다. Key 값에 따라 정렬됩니다. | 데이터를 정렬된 순서로 저장 하고 싶다면 이를 사용하면 된다. |
| LinkedHashMap | 해시 테이블과 연결 리스트를 사용하여 Key-Value 쌍을 저장합니다. 삽입 순서대로 출력됩니다. | 입력한 순서대로 데이터를 저장 하고 싶다면 이를 사용하며 된다. |
| ConcurrentHashMap | HashMap과 유사하지만 멀티스레드 환경에서 안전하게 사용할 수 있습니다. | 멀티스레드 환경에서 안전하게 사용할때 이를 사용하는것이 좋다. |
| Hashtable | HashMap과 유사하지만 멀티스레드 환경에서 안전하게 사용할 수 있습니다. | 멀티스레드 환경에서 안전하게 사용해야 할 때 사용하는것이 좋으나 일반적으로는 HashMap을 사용하는 것이 더 효율적입니다. |
List와 ArrayList는 모두 순차적으로 저장하는 자료구조입니다. 하지만 두 자료구조는 차이점이 있습니다.
- 두 개의 차이점은 인터페이스(List)인지 아니면 인터페이스를 구현하는 클래스(ArrayList)인지 여부입니다.
List의 경우는 순차적으로 데이터를 저장하는 인터페이스입니다.
ArrayList은 List의 인터페이스를 구현하는 클래스 중 하나입니다.
// List는 인터페이스, ArrayList는 인터페이스의 구현체
List<String> strList = new ArrayList<>();
// List는 인터페이스, LinkedList는 인터페이스의 구현체
List<String> strLinkedList = new LinkedList<>();
// List는 인터페이스, Vector는 인터페이스의 구현체
List<String> strVector = new Vector<>();
| 클래스 | 설명 | 사용 예시 |
|---|---|---|
| ArrayList | 내부적으로 배열을 사용하여 데이터를 저장하는 클래스. 데이터 접근 속도가 매우 빠르기 때문에 대용량 데이터 처리에 적합합니다. | 일반적으로 가장 많이 사용되고 효율적으로 동작하기에 이를 사용하면 됩니다. |
| LinkedList | 내부적으로 연결 리스트를 사용하여 데이터를 저장하는 클래스. 데이터 삽입/삭제 작업이 빈번하게 일어나는 경우에 적합합니다. | 리스트의 중간에 삽입 또는 삭제가 빈번하게 일어나는 경우 에는 이를 사용하면 됩니다. |
| Vector | ArrayList와 거의 동일하지만 동기화된 메서드를 제공합니다. 멀티스레드 환경에서 안전하게 사용할 수 있습니다. | 멀티스레드 환경에서 안전하게 사용할때 이를 사용하는 것이 좋습니다. |
Set과 HashSet은 중복을 허용하지 않는 자료구조입니다. 하지만 두 자료구조는 차이점이 있습니다.
- 두 개의 차이점은 인터페이스(Set)인지 아니면 인터페이스를 구현하는 클래스(HashSet)인지 여부입니다.
Set의 경우는 중복을 허용하지 않고 데이터를 저장하는 인터페이스입니다.
HashSet은 Set의 인터페이스를 구현하는 클래스 중 하나입니다.
// Set은 인터페이스, HashSet는 인터페이스의 구현체
Set<String[]> strArrSet = new HashSet<>();
// Set은 인터페이스, TreeSet는 인터페이스의 구현체
Set<String[]> strArrTreeSet = new TreeSet<>();
// Set은 인터페이스, LinkedHashSet는 인터페이스의 구현체
Set<String[]> strArrLinkedSet = new LinkedHashSet<>();
| 클래스 | 설명 | 사용 예시 |
|---|---|---|
| HashSet | 내부적으로 HashMap을 사용하여 데이터를 저장하는 클래스입니다. | 일반적으로 가장 많이 사용되고 효율적으로 동작하기에 이를 사용하면 됩니다. |
| TreeSet | 내부적으로 TreeMap을 사용하여 데이터를 저장하는 클래스입니다. 데이터는 정렬된 상태로 저장됩니다. | 데이터를 정렬된 순서대로 저장 하고 싶다면 이를 사용하면 됩니다. |
| LinkedHashSet | 내부적으로 LinkedHashMap을 사용하여 데이터를 저장하는 클래스입니다. | 삽입 순서대로 출력됩니다. “데이터를 삽입한 순서대로 출력”하고 싶다면 이를 사용하면 욉니다. |
📑출처: https://adjh54.tistory.com/138