Map은 'Key' 'Value'를 동시에 넣는 배열입니다. 즉, 'Key'를 통해 데이터를 가져옵니다. Map을 정의할 때, HashMap <key 변수 자료형, Value 변수 자료형> map이름=new HashMap<>();의 형태로 정의하는데 HashMap 이외 HashTable, TreeMap, LinkedhasMap으로 정의가 가능합니다. 우선 예제를 통해 Map을 어떻게 사용하는지 알아보도록 해요.
HashMap
HashMap<Integer, String> map = new HashMap<>();
map.put(1, "가나다");
map.put(2, "라마바");
System.out.println(map.get(1));
map.put(key,value);의 구조로 정의합니다. 'key' 또는 'value' 데이터를 넣지 않으면 형태에 맞지 않기 때문에 에러가 발생돼요. 정의 또는 넣은 데이터를 출력해야 되는데 그때 사용되는 게 'get'입니다. 'map.get(key)'의 형태로 출력하고 키가 1인 데이터를 가져오도록 하면 "가나다"가 출력됩니다.
HashMap<Integer, String> map = new HashMap<>();
map.put(1, "가나다");
map.put(2, "라마바");
map.remove(1);
System.out.println(map.get(1));
System.out.println(map.size());
}
이후 map에 있는 데이터를 삭제할 때는 'map.remove(key)'로 내용을 지울 수 있고 'map.size()'를 이용하여 현재 map에 저장된 데이터의 크기도 알 수 있습니다.
HashMap<Integer, String> map = new HashMap<>();
map.put(1, "가나다");
map.put(1, "라마바");
System.out.println(map.get(1));
}
여기서 주의해야될 점은, key 값(1)이 중복되면 처음에 정의한 "가나다"는 삭제되고 이후 정의된 "라마바"로 데이터가 삽입됩니다. 데이터가 많아지면 어떻게 출력되는지 확인해보도록 하죠.
HashMap<Integer, Integer> map = new HashMap<>();
map.put(50, 1);
map.put(10, 2);
map.put(10, 2);
map.put(40, 3);
map.put(40, 3);
map.put(2, 4);
map.put(70, 5);
map.put(9, 6);
Set set = map.entrySet();
Iterator iter = set.iterator();
while(iter.hasNext()) {
System.out.println(iter.next());
}
보시다시피 중복된 값은 이후 정의된 map(key.value); 데이터가 출력되고 'map.put' 순서가 아닌 무작위로 데이터가 출력되는 것을 볼 수 있습니다.
TreeMap, HashTable, LinkedHashMap
TreeMap는 'key'의 데이터가 자동으로 정렬됨에 따라 처리하는 속도가 다른 Map보다 다소 오래 걸립니다. 'key' 값에 따라 자동으로 작은 순서대로 정렬되어 있는 모습을 볼 수 있습니다.
TreeMap<Integer, Integer> map = new TreeMap<>();
map.put(50, 1);
map.put(10, 2);
map.put(10, 2);
map.put(40, 3);
map.put(40, 3);
map.put(2, 4);
map.put(70, 5);
map.put(9, 6);
Set set = map.entrySet();
Iterator iter = set.iterator();
while(iter.hasNext()) {
System.out.println(iter.next());
}
}
HashTable은 'key' 'value' 값에 Null 사용이 불가능하고 동기화가 지원됩니다.
Hashtable<Integer, Integer> map = new Hashtable<>();
map.put(50, 1);
map.put(10, 2);
map.put(40, 3);
map.put(2, 4);
map.put(70, 5);
map.put(9, 6);
Set set = map.entrySet();
Iterator iter = set.iterator();
while(iter.hasNext()) {
System.out.println(iter.next());
}
LinkedHashMap은 데이터를 넣은 순서대로 출력되는데, 즉, 'map.put' 한 순서대로 출력됩니다.
LinkedHashMap<Integer, Integer> map = new LinkedHashMap<>();
map.put(50, 1);
map.put(10, 2);
map.put(40, 3);
map.put(2, 4);
map.put(70, 5);
map.put(9, 6);
Set set = map.entrySet();
Iterator iter = set.iterator();
while(iter.hasNext()) {
System.out.println(iter.next());
}
}
정리
Map은 다른 배열들과 다르게 'Key' 'Value' 정의하여 'Key' 값을 통해 데이터를 출력합니다. 'Key' 중복은 불가능하고 Null 값 사용이 가능합니다.
- HashMap - 'Key' 중복 불가, 데이터 출력 시 정렬 없음
- TreeMap - 'Key' 값 순서대로 자동 정렬
- HashTable - Null 값 사용 불가, 데이터 출력 시 정렬 없음
- LinkedHash Map - 'map.put' 순서에 따라 정렬 및 출력
'깨알정보' 카테고리의 다른 글
유튜브 프리미엄 인도 우회방법 (결제 초간단) (6) | 2021.03.25 |
---|---|
신박한 주접멘트 주접댓글 모음 추천 순위 TOP (12) | 2021.03.23 |
기아 전기차 EV6 출시일 가격 사전예약, 디자인은 ? (11) | 2021.03.21 |
자바 래퍼 클래스 알아보기 (8) | 2021.03.20 |
디카르고 코인 카카오 시세 전망, 지금 들어가도 될까 ? (4) | 2021.03.20 |
댓글