Key-Value 방식의 데이터 저장과 HashMap<K, V> 클래스
public static void main(String[] args) {
HashMap<Integer, String> map = new HashMap<>();
// Key-Value 기반 데이터 저장
map.put(45, "Brown");
map.put(37, "James");
map.put(23, "Martin");
// 데이터 탐색
System.out.println("23번 : " + map.get(23));
System.out.println("37번 : " + map.get(37));
System.out.println("45번 : " + map.get(45));
// 데이터 삭제
map.remove(37);
// 데이터 삭제 확인
System.out.println("37번 : " + map.get(37));
}
3학년 2반 HashMap이 있을 떄, 키는 중복되지 않아야 해서 set인터페이스 구현.
set은 컬렌션 인터페이스를 구현했기 때문에 반복자 생성 가능.
우리는 즉 키의 반복자를 이용해서 순차적 접근이 가능하다!!
HashMap<K, V>의 순차적 접근 방법
HashMap<K, V> 클래스는 Iterable<T> 인터페이스를 구현하지 않으니 for-each 문을 통해서, 혹은 '반복자'를 얻어서 순차적 접근을 진행할 수 없다.
대신 다음 메소드 호출을 통해서 Key를 따로 모아 놓은 컬렉션 인스턴스를 얻을 수 있다.
그리고 이때 반환된 컬렉션 인스턴스를 대상으로 반복자를 얻을 수 있다.
public Set<K> KeySet()
HashMap<K, V>의 순차적 접근의 예
public static void main(String[] args) {
HashMap<Integer, String> map = new HashMap<>();
map.put(45, "Brown");
map.put(37, "James");
map.put(23, "Martin");
// Key만 담고 있는 컬렉션 인스턴스 생성
Set<Integer> ks = map.keySet();
// 전체 Key 출력 (for-each문 기반)
for (Integer n : ks)
System.out.print(n.toString() + '\t');
System.out.println();
// 전체 Value 출력 (for-each문 기반)
for (Integer n : ks)
System.out.print(map.get(n).toString() + '\t');
System.out.println();
// 전체 Value 출력 (반복자 기반)
for (Iterator<Integer> itr = ks.iterator(); itr.hasNext(); )
System.out.print(map.get(itr.next()) + '\t');
System.out.println();
}
TreeMap<K, V>의 순차적 접근의 예
public static void main(String[] args) {
TreeMap<Integer, String> map = new TreeMap<>();
map.put(45, "Brown");
map.put(37, "James");
map.put(23, "Martin");
Tree 자료구조의 특성상 반복자가 정렬된 순서대로 key들에 접근을 하고 있다.
이렇듯 반복자의 접근 순서는 컬렉션 인스턴스에 따라 달라질 수 있다.
// Key만 담고 있는 컬렉션 인스턴스 생성
Set<Integer> ks = map.keySet();
// 전체 Key 출력 (for-each문 기반)
for (Integer n : ks)
System.out.print(n.toString() + '\t');
System.out.println();
// 전체 Value 출력 (for-each문 기반)
for (Integer n : ks)
System.out.print(map.get(n).toString() + '\t');
System.out.println();
// 전체 Value 출력 (반복자 기반)
for (Iterator<Integer> itr = ks.iterator(); itr.hasNext(); )
System.out.print(map.get(itr.next()) + '\t');
System.out.println();
}
'# 02 > Java' 카테고리의 다른 글
[윤성우 열혈자바] 25-1. 열거형 (0) | 2019.10.25 |
---|---|
[윤성우 열혈자바] 24-1. 컬렉션 기반 알고리즘 (0) | 2019.10.25 |
[윤성우 열혈자바] 23-4. Queue<E> 인터페이스를 구현하는 컬렉션 클래스들 (0) | 2019.10.24 |
[윤성우 열혈자바] 23-3. Set<E> 인터페이스를 구현하는 컬렉션 클래스들 (0) | 2019.10.24 |
[윤성우 열혈자바] 23-2. List<E> 인터페이스를 구현하는 컬렉션 클래스들 (0) | 2019.10.24 |