반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 붕대 감기 자바
- 오블완
- 쿠키
- 멀티프로세싱
- contiune
- hackerrank
- 다형성
- spring security
- spring security 설정
- 오버라이딩
- over()
- 객체지향
- 리눅스
- 자바의정석
- 자바의 정석
- java
- 입출력
- continue 사용법
- 티스토리챌린지
- 멀티태스킹
- 혼공얄코
- 붕대 감기
- break 사용법
- SQL Mapper
- 오버로딩
- 중첩 break
- CPU
- 프로그래머스 붕대 감기
- 캡슐화
- 프로그래머스
Archives
- Today
- Total
쉽게 쉽게
[Java] Map 메서드 활용법 본문
반응형
▤ 목차
Map에서 활용할 수 있는 메서드와 키(key)와 값(value)을 사용하는 방법에 대해 공부하며 작성했다.
1. Map의 추가 메서드 활용
보통은 아래처럼 map을 선언하고 값을 넣어준다.
HashMap<Integer ,String> map = new HashMap<>();
map.put(1,"AAA");
map.put(2,"BBB");
map.put(3,"CCC");
map.put(4,"DDD");
map.get(1); //AAA
map.get(2); //BBB
map.get(3); //CCC
map.get(4); //DDD
하지만 map에 동일 키 값을 추가할 경우 value의 값이 덮어쓰기가 되는데 이를 원치 않는다면 getOrDefault 메서드를 사용할 수 있다.
1. getOrDefault
getOrDefault(Object key, V DefaultValue)
- key : 값을 가져와야 하는 요소의 키
- defaultValue : 지정된 키로 매핑된 값이 없는 경우 반환되어야 하는 기본값
- 찾는 key가 존재하면 해당 key에 매핑되어 있는 값을 반환하고, 그렇지 않으면 디폴트 값을 반환
덮어쓰기 방지
//5의 값이 없을때는 "EEE"를 추가
map.put(5, map.getOrDefault(5, "EEE"));
map.get(5) //EEE
//5에 다른 값을 추가하려고 해도
//이미 5의 값이 있기때문에 "EEE"가 추가됨
map.put(5, map.getOrDefault(5, "ZZZ"));
map.get(5) //EEE
좀 더 활용해보자면 동일한 key값이 몇 개인지 카운트하는 방식으로도 사용할 수 있다.
동일한 key 개수 카운트
String [] alphabet = { "A", "B", "C" ,"A", "B", "B"};
HashMap<String, Integer> map = new HashMap<>();
for(String key : alphabet){
map.put(key, map.getOrDefault(key, 0) + 1);
}
System.out.println("결과 : " + map); // 결과 : {A=2, B=3, C=1}
2. putIfAbsent
default V putIfAbsent(K key, V value)
- key - 지정된 값이 연관될 키
- value - 지정된 키와 연결될 값
- key 값이 존재하는 경우 > Map의 value 값을 반환
- key 값이 존재하지 않는 경우 > key와 value를 Map에 저장하고 null을 반환
- key 값이 존재하지 않는 경우 > value의 값의 null인 경우 value에 값을 넣어줌
덮어쓰기를 방지하는 또 다른 방법은 putIfAbsent를 사용하면 된다.
map.put(1,"AAA");
map.put(2,"BBB");
map.put(3,"CCC");
map.put(4,"DDD");
map.put(5, null);
//키값이 존재하기 때문에 "AAA" 값 유지
map.putIfAbsent(1, "ZZZ");
//키값이 존재하지만 value가 null이기에 값 넣어줌
map.putIfAbsent(5, "ZZZ");
//키값이 존재하지않기때문에 키와 값 추가
map.putIfAbsent(6, "XXX");
System.out.println("result : " + map); //result : {1=AAA, 2=BBB, 3=CCC, 4=DDD, 5=ZZZ, 6=XXX}
2. Map의 확인 메서드 활용
HashMap<Integer ,String> map = new HashMap<>();
map.put(1,"AAA");
map.put(2,"BBB");
map.put(3,"CCC");
map.put(4,"DDD");
1. keySet()
모든 KEY값 가져오기
// 방법1
// Iterator 사용 1 - keySet()
Iterator<String> keys = map.keySet().iterator();
while (keys.hasNext()){
String key = keys.next();
System.out.println("KEY : " + key); // 1, 2, 3, 4
}
// Iterator 사용 2 - keySet()
Set set = map.keySet();
Iterator iterator = set.iterator();
while(iterator.hasNext()){
String key = (String) iterator.next();
System.out.println("KEY : " + key); // 1, 2, 3, 4
}
//방법 2 - keySet() : key
for(String key : map.keySet()){
System.out.println("키 : " + key);
}
2. values()
모든 값 가져오기
Collection<String> col = map.values();
System.out.println(col); //AAA, BBB, CCC, DDD
for(String key : col){
System.out.println(key);
}
3. entrySet()
키와 값 모두 가져오기
//방법1
// Iterator 사용 - entrySet() : key / value
Set set = map.entrySet();
Iterator iterator = set.iterator();
while(iterator.hasNext()){
Entry<String,Integer> entry = (Entry)iterator.next();
String key = (String)entry.getKey();
int value = (Integer)entry.getValue();
System.out.println("Key : " + key);
System.out.println("Value : " + value);
}
//방법2
// entrySet() : key / value
for(Entry<String, Integer> s : map.entrySet()){
System.out.println("키 : " + s.getKey() + "값 : " + s.getValue());
}
4. containsKey()와 containsValue()
map에 키와 값이 존재하는지 확인
boolean result = map.containsKey(key);
System.out.println(result); //true or false
boolean result2 = map.containsValue(value);
System.out.println(result2); //true or false
https://mine-it-record.tistory.com/233
잘못된 내용이 있다면 지적부탁드립니다. 방문해주셔서 감사합니다. |
반응형
'개발공부 > Java' 카테고리의 다른 글
[Java] break, contiune문 사용법 (0) | 2024.11.24 |
---|---|
[Java] 소수 구하기 (2) | 2024.09.26 |
[Java] 최대공약수, 최소공배수 구하기 (0) | 2024.09.20 |
[Java] 약수의 개수 구하기 (0) | 2024.09.15 |
[Java] FILE 업로드(다중) (0) | 2024.04.28 |