자바는 배열이 크기가 고정되어 있고 삽입 삭제가 오래걸린다는 단점을 보완하기 위해 1)동적배열 개념인 Collection Framework를 제공한다.
대표적인 종류가 List, Set, Map이다.
Key 값과 Value 값을 관리해주는 컬렉션이다.
Key값은 데이터 중복을 허용하지 않지만, Value 값은 데이터 중복을 허용한다.
Map<String, String> map = new HashMap<String, String>();
map.put("key1", "value1");
map.put("key2", "value2");
System.out.println(map.get("key1"));
"key1"이라는 Key 값과 "value1"이라는 Value 값을 갖는 Entry가 HashMap 내부에 put() 메소드를 통해 저장된다. 해당 값을 가져올 때에는 get() 메소드를 활용해서 Key 값인 "key1"라는 문자열만 넘겨주면 Value 값을 얻어올 수 있는 형태의 컬렉션이다.
종류 | 순서 | 데이터 중복 | |
---|---|---|---|
Map | HashMap | x | Key: x / Value: o |
LinkedHashMap | o | Key: x / Value: o | |
TreeMap | x 입력순서는 유지하지 않으나, 입력된 key의 데이터에 따라 정렬되어 저장 | Key: x / Value: o |
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
TreeMap<String, String> map = new TreeMap<String, String>(); // String, String 타입 설정
Java에서 TreeMap을 선언 하려면 java.util.TreeMap을 import 한 뒤,
HashMap map = new HashMap<>(); 과 같은 형식으로 선언 한다.
key, value 모두 String이면, String, String으로 설정해준다.
TreeMap<String, String> map = new TreeMap<String, String>(); // String, String 타입 설정
map.put("1", "Java");
map.put("2", "Oracle");
map.put("3", "SQL");
map.put("4", "Spring");
System.out.print(map); // {1=Java, 2=Oracle, 3=SQL, 4=Spring}
HashMap<'타입','타입'> 에 맞춰서(예시에서는 String, String) key, value 값에 값을 넣는다.
Map은 모두 put(key, value) 메소드를 사용해 값을 추가한다.
TreeMap<String, String> map = new TreeMap<String, String>(); // String, String 타입 설정
map.put("1", "Java");
map.put("2", "Oracle");
map.put("3", "SQL");
map.put("4", "Spring");
map.remove("3);
System.out.print(map); // {1=Java, 2=Oracle, 4=Spring}
remove(key) 메소드를 사용해서 key를 삭제한다.
만약 clear() 메소드를 사용하면 HashMap의 모든 키 값을 삭제된다.
TreeMap<String, String> map = new TreeMap<String, String>(); // String, String 타입 설정
map.put("1", "Java");
map.put("2", "Oracle");
map.put("3", "SQL");
map.put("4", "Spring");
System.out.print(map); // 전체 출력 : {1=Java, 2=Oracle, 3=SQL, 4=Spring}
System.out.println(map.get(1));// -> Java
System.out.println(map.firstEntry());// -> 1=Java
System.out.println(map.firstKey());//-> 1
System.out.println(map.lastEntry());//->4=Spring
System.out.println(map.lastKey());//->4
TreeMap은 HashMap과는 달리 Tree구조로 이루어져 있기에 항상 정렬이 되어 있다.
따라서 최솟값, 최댓값을 바로 가져오는 다양한 메소드를 지원한다.
firseEntry는 최소 Entry값(예시: 1=Java), fisrtKey는 최소 key값(1), lastEntry는 최대 Entry값(4=Spring), lastKey는 최대 key값(4)을 리턴한다.
TreeMap<String, String> map = new TreeMap<String, String>(); // HashMap 선언
map.put("1", "Java");
map.put("2", "Oracle");
map.put("3", "SQL");
map.put("4", "Spring");
for(Map.Entry<String, String> e : map.entrySet()) {
System.out.println("Key : " + e.getKey() + ", Value : " + e.getValue());
}
for(Map.Entry<타입, 타입> 변수명 : entrySet()) 을 사용하여 HashMap을 반복문을 실행한다
이어서 getKey(), getValue() 메소드를 사용해 HashMap의 key 갑과 value 값을 가져 올 수 있다.