[ HashMap Class ]
- 컬렉션 프레임워크 Map 계열의 HashMap 자료구조를 구현한 클래스
- 입력 순서에 상관없이 자료를 해싱 기법으로 분류하여 저장 및 검색
- 구버전 격인 HashTable Class도 사용법은 동일
컬렉션 프레임워크 및 Map 계열의 기본 개념은 아래 글을 참조하시면 됩니다.
2019/12/10 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_기본 개념 [1/4]
2019/12/10 - [JAVA/기본 문법] - 컬렉션 프레임워크(컬렉션 API)_MAP 계열 [2/4]
[ 생성자 ]
- new HashMap<키 제네릭, 값 제네릭>() : 기본 용량 16, 사용률 0.75의 빈 HashMap 생성
- argument로 (int Capacity, float loadFactor)를 직접 지정할 수 있음
- 용량은 해싱기법을 통해 분류되는 카테고리의 갯수라고 할 수 있음
- 사용률은 전체 용량을 변경할 조건을 의미함 (75%가 차면 현재 용량의 2배로 용량 변경 등)
package study.first;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<String, String> list = new HashMap<String, String>();
}
}
[ put(키, 값) ]
- 키(Key)와 값(value)을 입력
- 제네릭으로 지정한 타입에 맞는 일반 배열을 이용해 한번에 넣어줄 수 있음
package study.first;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<String, String> list = new HashMap<String, String>();
String[] key = { "a", "b", "c", "d", "e" };
String[] value = { "apple", "banana", "candy", "dog", "enum" };
for (int i = 0; i < key.length; i++)
list.put(key[i], value[i]);
// {a=apple, b=banana, c=candy, d=dog, e=enum}
System.out.println(list);
}
}
[ keySet() / values() ]
- 키 / 값을 별도로 추출하여 컬렉션 형태로 반환 (Set 생성)
package study.first;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<String, String> list = new HashMap<String, String>();
String[] key = { "a", "b", "c", "d", "e" };
String[] value = { "apple", "banana", "candy", "dog", "enum" };
for (int i = 0; i < key.length; i++)
list.put(key[i], value[i]);
// [a, b, c, d, e]
System.out.println(list.keySet());
// [apple, banana, candy, dog, enum]
System.out.println(list.values());
}
}
[ get() ]
- 키값을 제공하면 해당 값을 반환
package study.first;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<String, String> list = new HashMap<String, String>();
String[] key = { "a", "b", "c", "d", "e" };
String[] value = { "apple", "banana", "candy", "dog", "enum" };
for (int i = 0; i < key.length; i++)
list.put(key[i], value[i]);
System.out.println(list.get("c")); // candy
}
}
[ replace() ]
- 키값과 바꿀 값을 제공하면 해당 키의 값을 변경함
package study.first;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<String, String> list = new HashMap<String, String>();
String[] key = { "a", "b", "c", "d", "e" };
String[] value = { "apple", "banana", "candy", "dog", "enum" };
for (int i = 0; i < key.length; i++)
list.put(key[i], value[i]);
list.replace("c", "coin");
System.out.println(list.get("c")); // coin
}
}
[ put() ]
- 키값과 추가할 값을 제공하면 새로운 "key : value"가 추가됨
- 만약 중복되는 키값을 제공하면 기존 키가 가지고 있던 값을 제공된 값으로 변경함
package study.first;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<String, String> list = new HashMap<String, String>();
String[] key = { "a", "b", "c", "d", "e" };
String[] value = { "apple", "banana", "candy", "dog", "enum" };
for (int i = 0; i < key.length; i++)
list.put(key[i], value[i]);
list.put("c", "coin"); // 기존값으로 대체
System.out.println(list.get("c")); // coin
list.put("f", "float"); // 새로 추가됨
System.out.println(list.get("f")); // float
}
}
[ containsKey() / containsValue() ]
- key / value가 존재하는지 여부 확인 후 true / false 반환
package study.first;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<String, String> list = new HashMap<String, String>();
String[] key = { "a", "b", "c", "d", "e" };
String[] value = { "apple", "banana", "candy", "dog", "enum" };
for (int i = 0; i < key.length; i++)
list.put(key[i], value[i]);
System.out.println(list.containsKey("a")); // true
System.out.println(list.containsValue("dog")); //true
}
}
[ remove() / clear() ]
- remove() : 제공한 키값의 항목을 제거
- clear() : 모두 삭제
package study.first;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<String, String> list = new HashMap<String, String>();
String[] key = { "a", "b", "c", "d", "e" };
String[] value = { "apple", "banana", "candy", "dog", "enum" };
for (int i = 0; i < key.length; i++)
list.put(key[i], value[i]);
list.remove("d"); // "d" 키/값 삭제
System.out.println(list.get("d")); // null
list.clear(); // 모두 삭제
System.out.println(list.size()); // 남은 갯수 0
}
}
HashMap에 저장된 데이터는 여러 가지 방법으로 순회할 수 있지만 아래 방법이 가장 간단한 것 같습니다. 확장형 for문을 이용한 방식인데, 배열의 값을 하나씩 변수에 넣어주고 반복문을 수행하게 됩니다.
먼저 확장 for문은 아래와 같이 사용합니다. 오른쪽에 있는 배열의 값을 하나씩 왼쪽에서 생성한 변수에 넣고 반복문의 내용을 수행하게 됩니다. 배열은 for문 안에서 생성해도 되고 바깥쪽에 있는 배열을 삽입해줘도 됩니다.
package study.first;
public class Test {
public static void main(String[] args) {
for (int num : new int[] { 1, 2, 3, 4, 5 })
System.out.print(num + " "); // 1 2 3 4 5
}
}
HashMap 출력에 확장 for문을 사용하면 아래와 같이 출력 가능합니다. keySet() 메소드를 통해 키값의 배열을 생성해서 해당 배열의 형태에 맞는 String 타입 변수에 하나씩 넣어준 뒤, 그 키 값을 이용해 값을 검색해 출력하는 방식입니다.
package study.first;
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
HashMap<String, String> list = new HashMap<String, String>();
String[] key = { "a", "b", "c", "d", "e" };
String[] value = { "apple", "banana", "candy", "dog", "enum" };
for (int i = 0; i < key.length; i++)
list.put(key[i], value[i]);
for (String keys : list.keySet())
System.out.println(keys + " : " + list.get(keys));
}
}
'▸JAVA > 라이브러리(API)' 카테고리의 다른 글
java.util.HashSet 주요 메소드 [1/1] (2) | 2019.12.11 |
---|---|
java.util.TreeMap 주요 메소드 [1/1] (2) | 2019.12.11 |
java.util.LinkedList 주요 메소드 [1/1] (2) | 2019.12.10 |
java.util.Vector 주요 메소드 [1/1] (2) | 2019.12.10 |
java.util.ArrayList 주요 메소드 [1/1] (2) | 2019.12.10 |
댓글