본문 바로가기
Java/Java

[Java] 컬렉션 프레임워크 - Map<K, V> 인터페이스

by 기록하는_사람 2022. 10. 18.

Map<K, V> 인터페이스

📌 Map<K, V> 인터페이스를 구현하는 컬렉션 클래스

① HashMap<K, V>

② TreeMap<K, V> 

: 트리 자료구조 기반으로 정렬 상태를 유지함. 

 

📌 Map<K, V> 인터페이스를 구현하는 컬렉션 클래스의 특징

① Key와 Value가 한 쌍을 이루는 형태로 데이터 저장.

 

📌 Key는 중복 불가. Value는 중복 가능.

 

HashMap<K, V> 클래스

📌 HashMap<K, V> 클래스는 public Set<K> keySet()을 사용해 순차적 접근함.

 

📌 public Set<K> keySet( )

: Set<E>을 구현하는 컬렉션 인스턴스를 생성하고, 모든 Key를 담아 반환함.

 

📄 HashMapTest.java

package map;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;

public class HashMapTest {

	public static void main(String[] args) {
		HashMap<Integer, String> map = new HashMap<>();
		map.put(3000, "apple");
		map.put(1000, "banana");
		map.put(5000, "cherry");
		map.put(10000, "watermelon");
		
		// Key만 담고 있는 컬렉션 인스턴스 생성.
		Set<Integer> ks = map.keySet();
		
		// 전체 Key, Value 출력.
		for(Integer i : ks) {
			System.out.print(i.toString() + " " + map.get(i).toString() + "  ");  // 10000 watermelon  3000 apple  1000 banana  5000 cherry  
		}
		System.out.println();
		
		// 전체Value 출력.
		for(Iterator<Integer> it = ks.iterator(); it.hasNext();) {
			System.out.print(map.get(it.next()) + " ");  // watermelon apple banana cherry 
		}
		System.out.println();
	}

}

 

TreeMap<K, V> 클래스

📌 HashMap<K, V> 클래스는 public Set<K> keySet()을 사용해 순차적 접근함.

 

📌 public Set<K> keySet( )

: Set<E>을 구현하는 컬렉션 인스턴스를 생성하고, 모든 Key를 담아 반환함.

 

📄 TreeMapTest.java

package map;

import java.util.Comparator;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.TreeMap;

class PriceComparator implements Comparator<Integer> {
	public int compare(Integer n1, Integer n2) {
		return n2.intValue() - n1.intValue();
	}
}

public class TreeMapTest {

	public static void main(String[] args) {
		TreeMap<Integer, String> map = new TreeMap<>(new PriceComparator());
		map.put(3000, "apple");
		map.put(1000, "banana");
		map.put(5000, "cherry");
		map.put(10000, "watermelon");
		
		// Key만 담고 있는 컬렉션 인스턴스 생성.
		Set<Integer> ks = map.keySet();
		
		// 전체 Key, Value 출력.
		for(Integer i : ks) {
			System.out.print(i.toString() + " " + map.get(i).toString() + "  ");  // 10000 watermelon  5000 cherry  3000 apple  1000 banana    
		}
		System.out.println();
		
		// 전체Value 출력.
		for(Iterator<Integer> it = ks.iterator(); it.hasNext();) {
			System.out.print(map.get(it.next()) + " ");  // watermelon cherry apple banana 
		}
		System.out.println();
	}

}

 

댓글