- Map인터페이스의 메소드
기능 | 메소드 | 설명 |
객체 추가 | V put(K key, V value) | 주어진 키로 값을 저장. 새로운 키일 경우 null을 리턴하고 동일한 키가 있을 경우 값을 대체하고 이전 값을 리턴 |
객체 검색 | boolean containsKey(Object key) | 주어진 키가 있는지 |
boolean containsValue(Object value) | 주어진 값이 있는지 | |
Set<Map.Entry<K,V>> entrySet() | 키와 값의 쌍으로 구성된 모든 Map.Entry객체를 Set에 담아서 리턴 | |
V get(Object key) | 주어진 키가 있는 값을 리턴 | |
boolean isEmpty() | 컬렉션이 비어있는지 | |
Set<K> keySet() | 모든 키를 Set객체에 담아서 리턴 | |
int size() | 저장된 키의 총 수를 리턴 | |
Collection<V> values() | 저장된 모든 값을 Collection에 담아서 리턴 | |
객체 삭제 | void clear() | 모든 Map.Entry(키와 값)을 삭제 |
V remove(Object key) | 주어진 키와 일치하는 Map.Entry를 삭제하고 값을 리턴 |
- Map에는 iterator()가 없다. → keySet(), entrySet(), values() 를 호출해야한다.
- HashMap
- Map인터페이스의 구현클래스
- Hashing기법으로(키와 값의 쌍으로) 데이터를 저장
- Map<K, V> map = new HashMap<K, V>();
- 키(K): 컬렉션 내의 키 중 유일해야함 (중복X)
- 값(V): 데이터의 중복 허용
- HashMap의 키가 되려면 hashCode()의 리턴값이 같아야함
- 데이터가 많아도 검색이 빠르다.
- 순서를 유지하려면, LinkedHashMap클래스를 사용하면 된다.
//Map컬렉션 생성
Map<String, Integer> map = new HashMap<String, Integer>();
//객체 저장
map.put("동장군", 75);
map.put("홍길동", 90);
//객체 찾기
System.out.println(map.get("홍길동")); //90
//객체를 하나씩 처리
Set<String> keySet=map.keySet();
Iterator<String> iterator = keySet.iterator();
while(iterator.hasNext()){
String key=iterator.next();
Integer value=map.get(key);
//반복해서 키를 얻고, 값을 Map에서 얻어냄
}
//객체 삭제
map.remove("홍길동");
//객체를 하나씩 처리
Set<Map.Entry<String, Integer>> entrySet=map.entrySet();
Iterator<Map.Entry<String, Integer>> entryIterator = entrySet.entryIterator();
while(entryIterator.hasNext()){
Map.Entry<String, Integer> entry=entryIterator.next();
String key=entry.getKey();
Integer value=entry.getValue();
//반복해서 Map.Entry를 얻고, 키와 값을 얻어냄
}
//객체 전체 삭제
map.clear();
- 해싱 (Hashing)기법이란? 해시함수로 해시테이블(배열과 LinkedList가 조합된 형태)에 데이터를 저장, 검색
- 키로 해시함수를 호출해서 해시코드를 반환한다.
- 키 → 해시함수(hash function) → 해시코드( =index, 배열의 저장위치)
- 해시코드에 대응하는 LinkedList를 배열에서 찾는다.
- LinkedList에서 키와 일치하는 데이터를 찾는다.
*해시함수는 같은 키에 대해 항상 같은 해시코드를 반환해야한다.
*서로 다른 키일지라도 같은 값의 해시코드를 반환할 수 있다.
- Hashtable
- 동기화된 메소드로 구성 → HashMap(동기화X)은 Hashtable(동기화O)의 신버전
- Properties
- 키와 값을 String타입으로 제한한 컬렉션 <String, String>
- 파일에 읽기와 쓰기가 용이
728x90
반응형
'Java Tutorial' 카테고리의 다른 글
[Java] 스트림 (Stream) +Optional 클래스 (0) | 2024.07.02 |
---|---|
[Java] 인터페이스 (interface) (0) | 2024.06.16 |
[Java 필수 지식] 접근제어자 (0) | 2024.06.08 |
[Java] StringBuilder 클래스 (0) | 2023.07.24 |
[Java] 예외 처리 (0) | 2023.07.02 |