JAVA/컬렉션 자료구조
[Java] Map 컬렉션
숭어싸만코
2023. 5. 31. 19:27
Map 컬렉션
- Key 와 Value값으로 구성된 엔트리 객체를 저장한다.
- Key는 중복저장이 불가능하지만 Value는 가능하다.
- Map 컬렉션에는 HashMap, Hashtable, LinkedHashMap, properties, TreeMap등이 있다.
- Key 로 객체들을 관리하기 때문에 키를 매개값으로 갖는 메소드가 많다.
1.HashMap
- HashMap은 키로 사용할 객체가 hashCode()메소드 리턴값이 같고 equals() 메소드가 true를 리턴할 경우, 동일 키로 보고 중복저장을 허용하지 않는다.
Map<K,V> map = new HashMap<K,V>(); // K=> key 타입 , V=> Value 타입
Map<String,Integer> map = new HashMap<String,Integer>(); //Key=> String 타입 , Value=> Integer타입
[ HashMap 예제 ]
package study0530.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
public class HashMapExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
// ===Map 컬렉션 생성
Map<String, Integer> map = new HashMap<>();
// ===객체저장
map.put("신용권", 85);
map.put("홍길동", 90);
map.put("동장군", 80);
map.put("홍길동", 95); // 키가 같기 떄문에 마지막 저장한 값만 저장
System.out.println("총 Entry 수 : " + map.size());
System.out.println();
// ===키로 값얻기
String key = "홍길동";
int value = map.get(key); // 키를 매개값으로 주면 값을 리턴
System.out.println(key + ":" + value);
System.out.println();
// ===키 Set 컬렉션을 얻고, 반복해서 키와 값을 얻기
// 키를 반복하기 위해 반복자를 얻음
Set<String> keySet = map.keySet();
Iterator<String> keyIterator = keySet.iterator();
while (keyIterator.hasNext()) {
String k = keyIterator.next();
Integer v = map.get(k);
System.out.println(k + " : " + v);
}
System.out.println();
// ===엔트리 Set 컬렉션을 얻고, 반복해서 키와 값을 얻기
// 엔트리를 반복하기위해 반복자를 얻음
Set<Entry<String, Integer>> entrySet = map.entrySet();
Iterator<Entry<String, Integer>> entryIterator = entrySet.iterator();
while (entryIterator.hasNext()) {
Entry<String, Integer> entry = entryIterator.next();
String k = entry.getKey();
Integer v = entry.getValue();
System.out.println(k + " : " + v);
}
System.out.println();
// ===키로 엔트리 삭제
map.remove("홍길동");
System.out.println("총 Entry수 : " + map.size());
System.out.println();
}//
}//
2. Hashtable
- HashMap과 동일한 내부 구조를 가지고있다.
- 차이점은 Hashtable은 동기화된(Synchronized) 메소드로 구성되어 있기 때문에 멀티 스레드가 동시에 실행 할 수 없다.
Map<K,V> map = new Hashtable<K,V>(); // K=> key 타입 , V=> Value 타입
Map<String,Integer> map = new Hashtable<String,Integer>(); //Key=> String 타입 , Value=> Integer타입
3. Properties
- Properties 는 Hashtable의 자식 클래스이기 때문에 Hashtable의 특징을 그대로 가지고 있다.
- Properties 는 Key와 Value를 String 타입으로 제한한 컬렉션이다.
- Properties는 주로 확장자가 .properties인 프로퍼티 파일을 읽을 때 사용한다.