반응형
- Map의 메서드 설명 + HashMap 사용 예제 + value값으로 검색 예제
Map이란?
- key, value 쌍으로 이루어진 데이터의 집합
- 순서가 없고, key는 중복이 안되지만 value는 중복이 가능함
Map의 메서드 정리
clear()
- map의 모든 객체를 삭제함
put(Object key, Object value)
- key-value를 한 쌍의 세트로 묶어 추가
putAll(Map m)
- map m의 모든 key-value 세트 추가
isEmpty()
- map이 비어있는지 확인 후 비어있으면 true, 안 비어있으면 false return
containsKey(Object key)
- 파라미터로 들어온 key와 일치하는 key가 map에 있는지 확인
containsValue(Object value)
- 파라미터로 들어온 value와 일치하는 value가 map에 있는지 확이
equlas(Object o)
- 동일한 map인지 비교
size()
- map에 저장된 key-value 세트 개수 return
remove(Object key)
- 파라미터로 들어온 key와 일치하는 key를 가진 key-value 세트 삭제
entrySet()
- 모든 세트 return
hashCode()
- 해시코드 return (int 형)
get(Object key)
- 파라미터로 들어온 key에 해당하는 value return
keySet()
- map에 저장된 모든 key 객체 return
values()
- map에 저장된 모든 value 객체 return
Map의 종류
- Map의 종류로는 HashMap, HashTable, LinkedHashMap, TreeMap 등이 존재
HashMap 사용 예제 1
package CollectionTest.MapTest;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Object> capital = new HashMap<String, Object>();
capital.put("한국", "부산");
capital.put("미국", "워싱턴");
capital.put("일본", "도쿄");
capital.put("중국", "베이징");
capital.put("영국", "런던");
capital.put("한국", "서울");
// "한국" key를 가진 set의 value값을 변경하고 싶으면
// 위와 같이 다시 put 해주면 됨
System.out.println(capital.toString()); // 전체 출력 (String 타입)
System.out.println(capital.entrySet()); // 전체 출력 (Set 타입)
System.out.println(capital.keySet()); // key 객체만 출력
System.out.println(capital.values()); // value 객체만 출력
System.out.println(capital.size()); // map의 사이즈
if(capital.containsKey("한국") == true) { // key값에 "한국"이면 존재하면
Object koreacapital = capital.get("한국"); // key값으로 value값 추출
System.out.println(koreacapital);
}
Map<String, Object> capital2 = new HashMap<String, Object>();
capital2.putAll(capital); // map 복사
capital2.remove("중국"); // key값이 "중국"인 set 삭제
System.out.println(capital.equals(capital2)); // 두개의 map이 같은지 확인
System.out.println(capital2.entrySet()); // captial2 출력
}
}
결과
{미국=워싱턴, 일본=도쿄, 영국=런던, 중국=베이징, 한국=서울}
[미국=워싱턴, 일본=도쿄, 영국=런던, 중국=베이징, 한국=서울]
[미국, 일본, 영국, 중국, 한국]
[워싱턴, 도쿄, 런던, 베이징, 서울]
5
서울
false
[미국=워싱턴, 한국=서울, 일본=도쿄, 영국=런던]
Map 예제 2
- Map의 메서드 중에 key 값으로 set를 찾아내는 메서드는 존재하지만
- value 값으로 set를 찾아내는 메서드는 따로 존재하지 않아서, 이럴 때는 반복문을 사용해야 함
- 여러가지 방법이 있겠지만, 다음과 같은 방법으로도 가능
package CollectionTest.MapTest;
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, String> player = new HashMap<String, String>();
Map<String, String> koreanPlayer = new HashMap<String, String>();
player.put("메시", "아르헨티나");
player.put("네이마르", "브라질");
player.put("손흥민", "대한민국");
player.put("박지성", "대한민국");
for(Map.Entry<String, String> entry : player.entrySet()) {
if(entry.getValue() == "대한민국") {
koreanPlayer.put(entry.getKey(), entry.getValue());
}
}
System.out.println(koreanPlayer.entrySet());
}
}
- "player" map에서 value값이 "대한민국"인 set들을 모아 새로운 "koreanPlayer" map 생성
결과
[손흥민 = 대한민국, 박지성 = 대한민국]
반응형
'JAVA > 기본 문법' 카테고리의 다른 글
[JAVA] 컬렉션 프레임워크 - 3. List (0) | 2022.04.13 |
---|---|
[JAVA] 컬렉션 프레임워크 - 2. Set (+ iterator) (0) | 2022.04.12 |
[JAVA] 컬렉션 프레임워크 (Collection Framework) (0) | 2022.04.12 |
[JAVA] Overloading, Overriding (0) | 2022.03.31 |
[JAVA] 상속(Inheritance), super (0) | 2021.08.17 |