- Map (맵)
- key에 대응되는 value를 가진 관계를 자료형
key | value |
name | 홍길동 |
나이 | 26 |
- key를 통해 value를 얻는다 --> 하나 하나 모든 것을 확인하지 않고, key값을 통해 바로 value를 얻어낼 수 있다.
- HashMap이 가장 대표적이다.
- HashMap의 메소드
1. put() : key와 value값을 넣는다.
import java.util.HashMap;
public class Sample {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("people", "사람");
map.put("baseball", "야구");
}
}
HashMap도 마찬가지로 제네릭스를 이용한다.
2. get() : key에 해당하는 value를 얻는다.
System.out.println(map.get("people")); // "사람" 출력
사람
key에 해당하는 value가 없으면, get() 메소드의 결과로 null이 출력된다.
해당 경우에 디폴트 값을 원한다면 getOrDefault() 메소드를 사용한다.
3. containsKey() : 맵에 키가 있는지 확인해 true or false로 반환한다.
4. remove() : key를 매개체로, key와 연결된 value를 모두 삭제하고 value값을 반환한다.
5. size() : 맵의 크기를 반환한다.
6. keySet() : 맵의 모든 key를 모아서 Set자료형으로 반환한다.
import java.util.HashMap;
public class Sample {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("people", "사람");
map.put("baseball", "야구");
System.out.println(map.keySet()); // [baseball, people] 출력
}
}
아래와 같이 List형으로 변환해 사용할 수 있다.
List<String> keyList = new ArrayList<>(map.keySet());
- LinkedHashMap은 입력된 순서대로 데이터를 저장하는 특징을 가지고 있다.
- TreeMap은 입력된 key의 오름차순 순서로 데이터를 저장하는 특징을 가지고 있다.
- Set (집합)
- set은 집합이므로, 원소의 중복을 허용하지 않고 순서가 없다.
import java.util.Arrays;
import java.util.HashSet;
public class Sample {
public static void main(String[] args) {
HashSet<String> set = new HashSet<>(Arrays.asList("H", "e", "l", "l", "o"));
System.out.println(set); // [e, H, l, o] 출력
}
}
[e, H, l, o]
위처럼 h,e,l,l,o를 원소로 넣어 집합을 만들었지만, 결과는 순서가 보장되지 않고 중복값이 사라진 것을 볼 수 있다.
--> 자료형의 중복을 제거하기 위한 필터로 Set을 사용할 수 있다.
- set의 메소드
1. 교집합 : retainAll()
2. 합집합 : addAll()
3. 차집합 : removeAll()
위 메소드들은 사용법이 동일하다. 교집합을 예시로 알아보자
import java.util.Arrays;
import java.util.HashSet;
public class Sample {
public static void main(String[] args) {
HashSet<Integer> s1 = new HashSet<>(Arrays.asList(1, 2, 3, 4, 5, 6));
HashSet<Integer> s2 = new HashSet<>(Arrays.asList(4, 5, 6, 7, 8, 9));
HashSet<Integer> intersection = new HashSet<>(s1); // s1으로 intersection 생성
intersection.retainAll(s2); // 교집합 수행
System.out.println(intersection); // [4, 5, 6] 출력
}
}
[4, 5, 6]
특정 원소만 추가, 제거 하고싶다면 All을 빼면된다.
- TreeSet - 오름차순으로 값을 정렬하여 저장하는 특징이 있다.
- LinkedHashSet - 입력한 순서대로 값을 정렬하여 저장하는 특징이 있다.
'Java' 카테고리의 다른 글
[Java] Call by value & reference (0) | 2023.05.26 |
---|---|
[Java] for each문 & switch/case문 (0) | 2023.05.25 |
[Java] Class (클래스), Method (메소드), 생성자 (0) | 2023.05.24 |
[Java] 자료형 (배열, 리스트) (0) | 2023.05.23 |
[Java] 자료형 (숫자, 문자열) (0) | 2023.05.23 |