Intro
안녕하세요! Plitche(플리체)입니다. :P
자바에서 Map과 Set은 컬렉션 프레임워크의 일부로, 데이터를 저장하고 관리하는 데 사용됩니다.
서로 다른 데이터 구조를 제공하며, 각각의 고유한 특징과 사용 사례에 대해서 설명드리겠습니다.
Map
- Map은 키-값 쌍으로 데이터를 저장하는 자료구조입니다.
- 각각의 키는 유일해야 하며, 하나의 키에는 하나의 값만 매핑됩니다.
- Map은 특정 키를 사용하여 값을 검색하거나, 키-값 쌍을 추가, 제거, 수정하는 데 사용됩니다.
- 자바에서는 Map 인터페이스를 구현한 여러 클래스가 제공됩니다. 예를 들면 HashMap, TreeMap, LinkedHashMap 등이 있습니다.
- Map 예시
Map<String, Integer> studentGrades = new HashMap<>();
// 키-값 쌍 추가
studentGrades.put("John", 85);
studentGrades.put("Emily", 92);
studentGrades.put("Mike", 78);
// 특정 키로 값을 검색
int johnGrade = studentGrades.get("John");
// 특정 키의 값 수정
studentGrades.put("John", 90);
// 키-값 쌍 제거
studentGrades.remove("Mike");
// 모든 키 순회
for (String key : studentGrades.keySet()) {
int grade = studentGrades.get(key);
System.out.println(key + ": " + grade);
}
- Map의 주요 메서드
- put(key, value): 특정 키와 값을 매핑하여 Map에 추가
- get(key): 주어진 키에 해당하는 값을 반환
- remove(key): 주어진 키에 해당하는 키-값 쌍을 제거
- containsKey(key): 주어진 키가 Map에 있는지 여부를 확인
- keySet(): 모든 키를 Set으로 반환
- values(): 모든 값들을 Collection으로 반환
- entrySet(): 모든 키-값 쌍을 Set으로 반환
Map<String, Integer> studentGrades = new HashMap<>();
studentGrades.put("John", 85);
studentGrades.put("Emily", 92);
studentGrades.put("Mike", 78);
System.out.println(studentGrades.get("John")); // 85
studentGrades.put("John", 90);
studentGrades.remove("Mike");
for (String key : studentGrades.keySet()) {
int grade = studentGrades.get(key);
System.out.println(key + ": " + grade);
}
Set
- Set은 중복을 허용하지 않는 데이터 집합을 저장하는 자료구조입니다.
- Set은 순서를 보장하지 않으며, 동일한 요소가 중복되지 않습니다.
- Set은 주로 데이터 중복을 방지하거나, 집합 연산을 수행하기 위해 사용됩니다.
- 자바에서는 Set 인터페이스를 구현한 여러 클래스가 제공됩니다. 예를 들면, HashSet, TreeSet, LinkedHashSet 등이 있습니다.
- 예시
Set<String> fruits = new HashSet<>();
// 요소 추가
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
fruits.add("Apple"); // 중복된 요소는 추가되지 않음
// 요소 제거
fruits.remove("Banana");
// 요소 포함 여부 확인
boolean hasApple = fruits.contains("Apple");
// 모든 요소 순회
for (String fruit : fruits) {
System.out.println(fruit);
}
- Set 주요 메서드
- add(element): 주어진 요소를 Set에 추가
- remove(element): 주어진 요소를 Set에서 제거
- contains(element): 주어진 요소가 Set에 있는지 여부를 확인
- size(): Set에 저장된 요소의 개수를 반환
- iterator(): Set의 모든 요소를 순회하는 Iterator를 반환
Set<String> fruits = new HashSet<>();
fruits.add("Apple");
fruits.add("Banana");
fruits.add("Orange");
fruits.add("Apple"); // 중복된 요소는 추가되지 않음
fruits.remove("Banana");
System.out.println(fruits.contains("Apple")); // true
for (String fruit : fruits) {
System.out.println(fruit);
}
Map과 Set의 주요 차이점
- Map은 키-값 쌍으로 데이터를 저장하고, 특정 키를 사용하여 값을 검색하거나 수정합니다. Set은 중복을 허용하지 않는 단순한 데이터 집합을 저장합니다.
- Map은 저장된 데이터를 키를 기반으로 검색하고 수정할 수 있으므로, 많은 키-값 쌍을 포함하는 데이터 구조로 사용됩니다. Set은 주로 데이터 중복을 방지하거나 집합 연산을 수행하기 위해 사용됩니다.
- 또한, Map은 내부적으로 해시 함수를 사용하여 키-값 쌍을 저장하므로, 데이터에 대한 빠른 검색이 가능합니다. 반면 Set은 요소를 저장할 때 동일한 해시 함수를 사용하여 중복을 제거합니다.
- 마지막으로, Map은 키-값 쌍이라는 두 가지 데이터를 관리하므로 키와 값 간의 매핑 관계를 유지해야 합니다. Set은 각 요소가 독립적으로 관리되며, 순서가 보장되지 않습니다.
이러한 차이점을 고려하여 데이터를 저장하고 검색할 때 적합한 자료구조를 선택할 수 있습니다.
'Java' 카테고리의 다른 글
[Java] Map과 Generic(제네릭)이란? (예시 포함) (0) | 2023.06.13 |
---|---|
[Java] Interceptor(인터셉터)란? (0) | 2023.06.08 |
[Java] Spring_Front에서 전달 된 데이터 Controller에서 처리하는 방법 (0) | 2023.06.01 |
[Java] 자바 상속의 개념과 예시 (0) | 2023.05.31 |