HashMap이란?
: 컬렉션 프레임워크에서 제공하는 데이터 구조로, 키(key)와 값(value)의 쌍으로 데이터를 저장하는 클래스
: web으로 가면 이게 Json이 된다.
특징 :
1. 키-값(Key-Value) 구조 : 데이터를 키와 값의 쌍으로 저장하며, 각 키는 고유(unique)해야 한다. 값은 중복 허용
2. 해싱(Hashing) : 내부적으로 데이터를 해싱(Hashing) 기법을 통해 저장하여 효율적인 검색 및 삽입 성능을 제공
3. 순서 없음 : 데이터는 입력 순서와 관계없이 저장된다.
4. NULL 허용 :
: 키는 최대 하나의 null 값을 허용
: 값은 여러 개의 null 값을 허용
주요 메서드 :
1. put(K key, V value) : 키와 값을 추가
2. get(Object key) : 특정 키에 대한 값을 반환
3. remove(Object key) : 특정 키-값 쌍을 삭제
4. size() : 저장된 키-값 쌍의 개수를 반환
5. containsKey(Object key) : 특정 키가 존재하는지 확인
6. containsValue(Object value) : 특정 값이 존재하는지 확인
7. keySet() : 저장된 모든 키를 반환
8. replace(K key, V value) : 특정 키의 값을 새로운 값으로 수정
객체 생성 방법(Integer, String)
HashMap<Integer, String> hMap = new HashMap<>();
Map<Integer, String> map = new HashMap<>();
: 2가지 생성 방법 중 편한 방법 사용
추가
map.put(111, "백십일");
map.put(222, "이백이십이");
map.put(333, "삼백삼십삼");
// map.put(new Integer(444), new String("사백사십사")); 사용 안해도 되는 예
Map 크기 확인
System.out.println(map.size());
key를 통해서 값을 취득
String value = map.get(333); // 출력 : 삼백삼십삼
System.out.println(value); // key : value가 이런 느낌
모두 출력
Iterator it = map.keySet().iterator(); // 잴 처음에 있는 주소값을 넣어준다.
while (it.hasNext()){ // 다음을 갖고있냐는 의미 / 안갖고있으면 산출
// key 취득
Integer key2 = (Integer) it.next(); // 그냥 생성 시 Object 타입이라 형변환 시킴
String value2 = map.get(key2);
System.out.println("key: " + key2 + " value: " + value2);
}
Iterator : 반복자를 의미
: 형변환도 꼭 시켜줘야 한다.
삭제
String reValue = map.remove(222); // key값 넣어줌
System.out.println("삭제된 값 : " + reValue);
검색
boolean b = map.containsKey(333);{
String val = map.get(333);
System.out.println(val);
}
수정
String str = "300 + 30 + 3";
map.replace(333, str);
객체 생성 방법(String, String)
Map<String, String> fruitMap = new HashMap<>();
// 과일
// 추가
fruitMap.put("숭", "복숭아");
fruitMap.put("박", "수박");
fruitMap.put("규", "귤");
String val2 = fruitMap.get("숭");
System.out.println(val2);
// 삭제
String reVal2 = fruitMap.remove("규");
System.out.println(reVal2);
Iterator<String> itt = fruitMap.keySet().iterator(); // 잴 처음에 있는 주소값을 넣어준다.
while (itt.hasNext()){ // 다음을 갖고있냐는 의미 / 안갖고있으면 산출
// key 취득
String key2 = (String) itt.next(); // 그냥 생성 시 Object 타입이라 형변환 시킴
String value2 = fruitMap.get(key2);
System.out.println("key: " + key2 + " value: " + value2);
}
// 검색
boolean b = fruitMap.containsKey("숭");{
String val = fruitMap.get("숭");
System.out.println(val);
}
// 수정
String str = "복숭아랑 수박이 잴 맛있다.";
fruitMap.replace("숭", str);
itt = fruitMap.keySet().iterator(); // 잴 처음에 있는 주소값을 넣어준다.
while (itt.hasNext()){ // 다음을 갖고있냐는 의미 / 안갖고있으면 산출
// key 취득
String key2 = (String) itt.next(); // 그냥 생성 시 Object 타입이라 형변환 시킴
String value2 = fruitMap.get(key2);
System.out.println("key: " + key2 + " value: " + value2);
}
: 위에 하나씩 다 설명이 있어서 전체 코드를 넣었음
: 그렇게 어려운 부분은 아니라고 생각한다!
: 어떻게 사용되는지 사용법 정도만 알면 활용할 수 있을 듯하다.
'Java' 카테고리의 다른 글
Java) 구체 클래스 의존 vs 인터페이스 기반 설계 : 다형성과 확장성의 차이 (0) | 2025.01.11 |
---|---|
Java) List 활용: ArrayList 기본 CRUD 예제 (0) | 2025.01.11 |
Java) 제네릭(Generic)과 BoxMap 클래스 활용 예제 (0) | 2025.01.11 |
Java) 변수의 종류와 접근 범위 (0) | 2025.01.09 |
Java) static 키워드의 이해와 활용 예제 (0) | 2025.01.09 |