반응형
HashMap
Hashtable은 JDK1.0 버전에서 처음으로 등장하며,
Vector와 마찬가지로 멀티스레드 안에서 안정성을 보장했지만,
속도가 느려서 JDK1.2 버전 부터는 HashMap이라는 것으로 대체되었다.
특징
- 키key 와 값value 구조
▷ List와 같이 선형 탐색보다는 속도측면에서 효율적.
▷ 인덱스를 통한 선형탐색이 아니기에 순서에 대한 의미가 없다.
- 중복 허용 X
▷ 기존에 값이 존재한다면 덮어씌우는 형태.
[예제 코드]
put(), get() 메소드를 활용해 데이터를 삽입하고 조회한다.
요소 삭제는 remove(키) / 요소 개수는 size()이용
import java.util.HashMap;
public class Main {
public static void main(String[] args) {
// 자료 구조이므로 key: value 값 타입 모두 객체 자료형이다.
HashMap<Integer, String> map = new HashMap<>();
for(int i=0; i<5; i++) {
map.put(i, "value " + i);
}
System.out.println(map);
// key=0에 대한 value 값을 새로운 값으로 갱신
map.put(0, "modified value");
System.out.println(map);
String data = map.get(0);
System.out.println("data: " + data);
}
}
[예제 코드]
- HashMap 값 존재 여부 확인
import java.util.*;
public class Main {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
// Map에 데이터 추가
map.put("harbang", "jeju");
// key 확인
if(map.containsKey("harbang")) {
System.out.println("Key 존재!");
}
// value 확인
System.out.println(map.containsValue("jeju"));
}
}
HashMap 순회
- Iterator 이용
- 데이터를 알아내려면 별도의 key 집합 이용.
- HashMap은 그 안에 있는 key를 Set 구조로 저장하고 있기 때문.
※ Set: 데이터 중복 X, 순서 X
import java.util.*;
public class Main {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<String, Integer>();
// Map에 데이터 추가
map.put("one", 1); map.put("two", 2);
map.put("three", 3); map.put("four", 4);
// Set & Iterator 이용
Set<String> ketSet = map.keySet();
Iterator<String> it = ketSet.iterator();
while(it.hasNext()) {
String key = it.next();
System.out.println("(" + key + ", " + map.get(key) + ")");
}
}
}
반응형
'프로그래밍 언어 > Java' 카테고리의 다른 글
[Java] 제어문 (if, swtich, for, while) (0) | 2021.03.02 |
---|---|
[Java] static 키워드 (0) | 2021.03.02 |
[Java] [예제] 사칙연산 계산기 (0) | 2021.03.02 |
[Java] 가비지 컬렉션(Garbage Collection) (0) | 2021.03.02 |
[Java] 오버로딩(Overloading) (0) | 2021.02.23 |
댓글