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인 프로퍼티 파일을 읽을 때 사용한다.