HashMap과 Hashtable - 순서x, 중복(키x,값O)
- Map인터페이스를 구현. 데이터를 키와 값의 쌍으로 저장
- HashMap(동기화x)은 Hashtable(동기화o)의 신버젼
HashMap
- Map인터페이스를 구현한 대표적인 컬렉션 클래스
- 순서를 유지하려면, LinkeHashMap클래스를 사용하면 된다.
TreeMap
- 범위 검색과 정렬에 유리한 컬렉션 클래스
- HashMap보다 데이터 추가, 삭제에 시간이 더 걸림
HashMap의 키(key)와 값(value)
- 해싱(hashing)기법으로 데이터를 저장. 데이터가 많아도 검색이 빠르다.
- Map인터페이스를 구현. 데이터를 키와 값의 쌍으로 저장
키(key) : 유일 값
값(value) : 중복 허용
Entry : key,value 한 쌍
해싱(hashing)
- 해시함수로 해시테이블에 데이터를 저장, 검색 (키를 넣으면 저장위치(index)를 알려줌)
- 해시테이블은 배열과 링크드 리스트가 조합된 형태
해싱 가져오는 과정
- 키를 보고
- 해시코드를 알려준다.
- 해시코드에 대응하는 링크드리스트를 배열에서 찾는다.
- 서로 다른 키여도 같은 해시코드를 반환할 수 있다.
중복 데이터값 갯수 구하기
import java.util.*;
class Java {
public static void main(String[] args) {
String[] data = {"A","K","A","K","D","K","A","K","K","Z","D"};
HashMap map = new HashMap();
for (int i = 0; i < data.length; i++) {
if (map.containsKey(data[i])) {
int value = (int)map.get(data[i]);
map.put(data[i], value + 1);
} else {
map.put(data[i], 1);
}
}
Iterator it = map.entrySet().iterator();
while(it.hasNext()) {
Map.Entry entry = (Map.Entry)it.next();
int value = (int)entry.getValue();
System.out.println(entry.getKey() + " : " + "" + value);
}
}
}