Map 컬렉션
- Map 컬렉션은 키와 값으로 구성된 Map.Entry 객체를 저장하는 구조를 가지고 있습니다.
- 키는 중복 저장될 수 없지만 값은 중복 저장될 수 있습니다.
- 기존에 저장된 키와 동일한 키를 저장할경우 기존의 값의 없어지고 새로운 값으로 대체됩니다.
- Map컬렉션에는 HashMap, HashTable, LinkedHashMap, Properties, TreeMap 등이 있습니다.
Map 컬렉션에서 공통적으로 사용가능한 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를 삭제하고 값을 리턴 |
HashMap
- HashMap은 Map 인터페이스를 구현한 대표적인 Map 컬렉션입니다.
- HashMap의 키로 사용할 객체는 hashCode()와 equals() 메소드를 재정의 하여 동등 객체가 될 조건을 정해야 합니다.
Map<K, V> map = new HashMap<K, V>();
//예시
Map<String, Interger> map = new HashMap<String, Integer>();
예시)
package sec16.exam01;
import java.util.*;
public class HashMapExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
Map<String, Integer> map = new HashMap<String, Integer>();
map.put("Java", 95);
map.put("C", 85);
Set<String> keySet = map.keySet();
Iterator<String> keyIterator = keySet.iterator();
while(keyIterator.hasNext()) {
String key = keyIterator.next();
Integer value = map.get(key);
System.out.println(key + " : " + value);
}
System.out.println();
}
}
HashTable
- HashTable은 HashMap과 동일한 내부 구조를 가지고 있습니다.
- 차이점으로는 HashTable은 동기화된 메소드로 구성되어 있기 때문에 멀티 스레드가 동시에
HashTable의 메소드들을 실행할 수 없고 하나의 스레드가 실행을 완료해야만 다른 스레드를 실행 할수 있습니다.
Map<K, V> map = new HashTable<K, V>();
예시) 키보드로 아이디와 비밀번호를 입력받아서 저장되어 있는 키와 값을 비교한 후 로그인 여부를 출력하는 예시
package sec16.exam01;
import java.util.*;
public class HashtableExample {
public static void main(String[] args) {
// TODO Auto-generated method stub
Map<String, String> map = new Hashtable<>();
map.put("Java", "1111");
map.put("C", "2222");
Scanner scanner = new Scanner(System.in);
while(true) {
System.out.println("아이디,비번 입력");
System.out.print("id: ");
String id = scanner.nextLine();
System.out.print("pw: ");
String password = scanner.nextLine();
System.out.println();
if(map.containsKey(id)) {
if(map.get(id).equals(password)) {
System.out.println("login");
break;
} else {
System.out.println("no pw");
}
} else {
System.out.println("no id");
}
}
}
}
'학습단 > JAVA 학습단' 카테고리의 다른 글
5주차 완료 (0) | 2023.08.12 |
---|---|
20. 혼공자 20일차(선입선출 ,후입선출 컬렉션) (0) | 2023.08.10 |
18. 혼공자 18일차(컬렉션 프레임 워크_2) (0) | 2023.08.08 |
17. 혼공자 17일차(컬렉션 프레임 워크) (0) | 2023.08.07 |
4주차 완료 (0) | 2023.07.28 |