HashMap이란?
HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션이다.
Map은 키(Key)와 값(Value)으로 구성된 Entry객체를 저장하는 구조를 가지고 있는 자료구조로 키와 값은 모두 객체이다.
값은 중복 저장될 수 있지만 키는 중복 저장될 수 없다.
HashMap은 많은 양의 데이터를 검색하는 데 뛰어나다.
사용 전 import
import java.util.HashMap;
HashMap 선언하기
HashMap을 생성할 때 Key 타입과 Value 타입을 파라미터로 주고 기본생성자를 호출한다.
HashMap<String, Integer> map1 = new HashMap<String,Integer>();//HashMap생성
HashMap<String,Integer> map2 = new HashMap<>(); //타입 파라미터 생략
HashMap<String,Integer> map3 = new HashMap<>(10);//초기 용량 설정
값 추가하기
put(key,value) 메소드를 사용하여 값을 추가한다.
선언 시 HashMap에 설정해 준 타입과 같은 타입의 Key와 Value값을 넣어야 한다.
만약 입력되는 키 값이 이미 존재한다면 새로 입력되는 값으로 대치된다.
HashMap<String,Ineger> map = new HashMap<String,Ineger>();
map.put("짱구",6);
map.put("둘리",23);
값 제거하기
remove(key) 메서드를 사용하여 값을 제거한다.
clear() 메서드를 사용하여 모든 값을 제거한다.
map.remove("짱구");
map.clear(); //모든 값 제거
값 출력하기
get(key) 메서드를 이용하여 value값을 반환한다.
HashMap<String,String> map = new HashMap<String,String>(){{//초기값 지정
put("apple","사과");
put("banana","바나나");
put("grape","포도");
}};
System.out.println(map); //전체 출력 = {"apple"=사과, "banana"=바나나, "grape"=포도}
System.out.println(map.get(apple));//key값 apple의 value값 = 사과
getOrDefault(key, defaultVal) : key를 가진 value가 존재하면 값을 반환하고 존재하지 않을 경우 default 값을 반환.
HashMap<String,String> map = new HashMap<String,String>(){{//초기값 지정
put("apple","사과");
put("banana","바나나");
put("grape","포도");
}};
System.out.println(map.getOrDefault("apple","사과")); // key "apple"가 존재하므로 "사과" 반환
System.out.println(map.getOrDefault("orange","오렌지")); // key "orange"가 없으므로 "오렌지" 반환
HashMap 탐색 방법
- entrySet()
- KeySet()
entrySet()
key와 value를 가지는 Set 객체를 반환
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
public class Main{
public static void main(String[] args){
HashMap<Integer,String> map = new HashMap<Integer,String>(){{//초기값 지정
put(1,"A");
put(2,"B");
put(3,"C");
}};
for (Entry<Integer, String> entrySet : map.entrySet()) {
System.out.println(entrySet.getKey() + " : " + entrySet.getValue());
}
// 1 : A
// 2 : B
// 3 : C
}
}
keySet()
key값만 필요한 경우 사용
for(Integer key : map.keySet()) {
System.out.println(key+" : "+map.get(key));
}
// 1 : A
// 2 : B
// 3 : C
HashMap 정렬
- key 기준 정렬
- value 기준 정렬
key 기준 정렬
import java.util.Arrays;
import java.util.HashMap;
class Solution{
public static void main(String args[]) throws Exception{
HashMap<Integer,String> map = new HashMap<Integer,String>(){{//초기값 지정
put(4,"B");
put(1,"D");
put(2,"A");
put(3,"C");
}};
Object[] mapkey = map.keySet().toArray();
Arrays.sort(mapkey);
for(int key:map.keySet()) {
System.out.println("key : " + key + " / " + "value : " + map.get(key));
}
/*
key : 1 / value : D
key : 2 / value : A
key : 3 / value : C
key : 4 / value : B
*/
}
}
value 기준 정렬
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Collections;
class Solution{
public static void main(String args[]) throws Exception{
HashMap<Integer,String> map = new HashMap<Integer,String>(){{//초기값 지정
put(1,"B");
put(3,"D");
put(2,"A");
put(4,"C");
}};
List<Integer> keySetList = new ArrayList<>(map.keySet());
// 오름차순 정렬
Collections.sort(keySetList, (o1, o2) -> (map.get(o1).compareTo(map.get(o2))));
for(Integer key : keySetList) {
System.out.println("key : " + key + " / " + "value : " + map.get(key));
}
/*
key : 2 / value : A
key : 1 / value : B
key : 4 / value : C
key : 3 / value : D
*/
// 내림차순 정렬
Collections.sort(keySetList, (o1, o2) -> (map.get(o2).compareTo(map.get(o1))));
for(Integer key : keySetList) {
System.out.println("key : " + key + " / " + "value : " + map.get(key));
}
/*
key : 3 / value : D
key : 4 / value : C
key : 1 / value : B
key : 2 / value : A
*/
}
}
참고
'Java' 카테고리의 다른 글
[Java] 자바 스택(Stack) 개념 및 사용법 (0) | 2022.03.09 |
---|---|
[Java] ArrayList 개념 및 사용 방법 (0) | 2022.02.19 |
댓글