Published 2021. 12. 30. 20:22
728x90
반응형

HashMap이란?

Map은 키와 값으로 구성된 Entry객체를 저장하는 구조를 가지고 있는 자료구조

여기서 키와 값은 모두 객체임

값은 중복 저장될 수 있지만 키는 중복 저장될 수 없음

만약 기존에 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대체됨

HashMap은 이름 그대로 해싱(Hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는 데 있어서 뛰어난 성능을 보임

 


HashMap 선언

HashMap<String,String> map1 = new HashMap<String,String>(); //HashMap생성
HashMap<String,String> map2 = new HashMap<>(); //new에서 타입 파라미터 생략가능
HashMap<String,String> map3 = new HashMap<>(map1); //map1의 모든 값을 가진 HashMap생성
HashMap<String,String> map4 = new HashMap<>(10); //초기 용량(capacity)지정
HashMap<String,String> map5 = new HashMap<>(10, 0.7f); //초기 capacity,load factor지정
HashMap<String,String> map6 = new HashMap<String,String>(){{ //초기값 지정
    put("a","b");
}};

 


HashMap 값 추가

HashMap<Integer,String> map = new HashMap<>(); //new에서 타입 파라미터 생략가능
map.put(1,"사과"); //값 추가
map.put(2,"바나나");
map.put(3,"포도");

 


HashMap 값 삭제

HashMap<Integer,String> map = new HashMap<Integer,String>(){{ //초기값 지정
    put(1,"사과");
    put(2,"바나나");
    put(3,"포도");
}};
map.remove(1); //key값 1 제거
map.clear(); //모든 값 제거

 


HashMap 값 출력

HashMap<Integer,String> map = new HashMap<Integer,String>(){{ //초기값 지정
    put(1,"사과");
    put(2,"바나나");
    put(3,"포도");
}};
		
System.out.println(map); //전체 출력 : {1=사과, 2=바나나, 3=포도}
System.out.println(map.get(1)); //key값 1의 value얻기 : 사과
		
//entrySet() 활용
for (Entry<Integer, String> entry : map.entrySet()) {
    System.out.println("[Key]:" + entry.getKey() + " [Value]:" + entry.getValue());
}
//[Key]:1 [Value]:사과
//[Key]:2 [Value]:바나나
//[Key]:3 [Value]:포도

//KeySet() 활용
for(Integer i : map.keySet()){ //저장된 key값 확인
    System.out.println("[Key]:" + i + " [Value]:" + map.get(i));
}
//[Key]:1 [Value]:사과
//[Key]:2 [Value]:바나나
//[Key]:3 [Value]:포도

 


Iterator사용

HashMap 전체 출력 시 반복문 대신 Iterator 사용가능

HashMap<Integer,String> map = new HashMap<Integer,String>(){{ //초기값 지정
    put(1,"사과");
    put(2,"바나나");
    put(3,"포도");
}};
		
//entrySet().iterator()
Iterator<Entry<Integer, String>> entries = map.entrySet().iterator();
while(entries.hasNext()){
    Map.Entry<Integer, String> entry = entries.next();
    System.out.println("[Key]:" + entry.getKey() + " [Value]:" +  entry.getValue());
}
//[Key]:1 [Value]:사과
//[Key]:2 [Value]:바나나
//[Key]:3 [Value]:포도
		
//keySet().iterator()
Iterator<Integer> keys = map.keySet().iterator();
while(keys.hasNext()){
    int key = keys.next();
    System.out.println("[Key]:" + key + " [Value]:" +  map.get(key));
}
//[Key]:1 [Value]:사과
//[Key]:2 [Value]:바나나
//[Key]:3 [Value]:포도

참고 자료

https://coding-factory.tistory.com/556

반응형

'프로그래밍 > JAVA' 카테고리의 다른 글

[Java] 람다식의 특징 및 장단점  (0) 2022.03.14
[Java] 람다식이란?  (0) 2022.01.28
HashSet 사용 예제  (0) 2021.12.29
ArrayList 사용 예제  (0) 2021.12.28
자바 Collection(List, Set, Map) 비교  (0) 2021.12.27
복사했습니다!