forest_moon
[JAVA] 자바의 HashMap 본문
HashMap이란?
HashMap은 Map인터페이스에 속해있는 컬렉션.
다른 특징으로는 HashTable과 유사하지만 동기화가 되지 않고 Null값도 저장이 가능합니다
Map 인터페이스를 상속하고 있기에 Map의 성질을 그대로 가지고 있고 Map은 키와 값으로 구성된 Entry객체를 저장하는 구조를 가지고 있는 자료구조이다. 여기서 키와 값은 모두 객체입니다.
값은 중복 저장될 수 있지만 키는 중복 저장될 수 없습니다. 만약 기존에 저장된 키와 동일한 키로 값을 저장하면 기존의 값은 없어지고 새로운 값으로 대치됩니다. HashMap은 이름 그대로 해싱(Hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는 데 있어서 뛰어난 성능을 보입니다.
그림과 같이 HashMap은 내부에 '키'와 '값'을 저장하는 자료 구조를 가지고 있습니다. HashMap은 해시 함수를 통해 '키'와 '값'이 저장되는 위치를 결정하므로, 사용자는 그 위치를 알 수 없고, 삽입되는 순서와 들어 있는 위치 또한 관계가 없습니다.
HashMap 선언하기
HashMap<String,String> a1 = new HashMap<String,String>();//HashMap생성
HashMap<String,String> a2 = new HashMap<>();//new에서 타입 파라미터 생략가능
HashMap<String,String> a3 = new HashMap<>(a1);//a1의 모든 값을 가진 HashMap생성
HashMap<String,String> a4 = new HashMap<>(10);//초기 용량(capacity)지정
HashMap<String,String> a5 = new HashMap<>(10, 0.7f);//초기 capacity,load factor지정
HashMap<String,String> a6 = new HashMap<String,String>(){{//초기값 지정
put("1","2");
}};
HashMap<String, String> str = new HashMap<String, String>(); // String, String 타입 설정
HashMap<Character, Character> ch = new HashMap<Character, Character>(); // Char, Char 타입 설정
}
}
HashMap 값 추가하기
import java.util.*;
class Solution {
public String solution(String letter) {
String answer = "";
Map<String, String> map = new HashMap<>();
map.put(".-", "a");
map.put("-...", "b");
map.put("-.-.", "c");
map.put("-..", "d");
map.put(".", "e");
String[] word =letter.split(" ");
for(String secret : word) {
answer += map.get(secret);
}
return answer;
}
}
HashMap의 값을 추가하는 방법은 put(Key, Value)를 사용
Key , Value 에 맞는 타입의 값을 넣어줘야 추가된다.
만약 같은 키 값의 데이터를 put하면 기존의 Value가 나중에 넣은 Value로 변경이 됩니다
HashMap 값 삭제 하기
HashMap<Integer,String> map = new HashMap<String,String>(){{//초기값
put(아침,"사과");
put(점심,"바나나");
put(저녁,"포도");
}};
map.remove(아침); //아침 key값 제거
map.clear(); //모든 값 제거
map.remove() 를 하면 해당 하는 key값 삭제
map.clear(); 모든 값들 다 제거
Reference
https://www.geeksforgeeks.org/java-util-hashmap-in-java-with-examples/
https://coding-factory.tistory.com/556
'JAVA' 카테고리의 다른 글
[JAVA]자바,입문정리 (0) | 2023.02.27 |
---|---|
[JAVA]래퍼 클래스(Wrapper Class)? (0) | 2023.02.27 |
객체지향이란? (0) | 2023.02.06 |
가비지컬렉션(Garbage Collection)이란? (0) | 2023.02.01 |
Spring Web MVC의 Dispatcher Servlet의 동작 원리 (0) | 2022.12.12 |