Blog

[Java]26 기초문법 - 자료구조 컬렉션 Map 생성과 메서드 기능 이용 연습

Author
Summary
Java의 자료구조
Category
Study
Tags
Java
Favorite
Memory Date
2023/07/27
Cross Reference Study
Related Media
Related Thought
Related Lessons
tag
날짜
작성자
진행상황
진행 전
태그구분
6 more properties

Collection - Map

컬렉션은 이전 교육과정에서 좀 어렵다 생각하고 잠깐 놓친 사이에 지나가서 바로 알고리즘~SQL로 넘어가고해서 내가 가장 기본기가 약하다고 느끼던 부분이다. 그래서 블로그보단 집중해서 보려고 노력했다. 얼마나 놓친 부분이 많은지 체감되고있는데, 아직도 이해도가 좀 애매한 구석들이 많다. 조금 다양한 강의나 블로그를 통해서 나를 이해시켜줄만한 무언가 필요하다. 알고리즘과도 연결되는 것도 그렇지만 나중에 프로젝트에서 실제로 자주 쓰이는 부분이기 때문에 걱정이 많다. 여러 사람들이 이해한 방법들을 살펴보면서 나에게 맞는 이해가 될 때 스터디 동료들과 이것들에 대해 이해되는 것들을 공유하고 서로 알려주는 시간을 가져야 겠다.
Map은 프로젝트에서 정말 많이 사용했다. 대부분의 배열을 HashMap을 이용 한 것으로 기억나는데 프로젝트를 한번 다시 살펴보긴 해야겠다. KEY : VALUE 쌍(pair) 중요
Key는 Unique 해야 한다.(중복X)
사용해야 하는 경우
1) 정렬해야 한다.
2) 많은 자료를 저장하고, 검색이 빨라야 한다.
3) 빈번하게 삽입, 삭제하지 않는다.
>이러한 이유로 기본적으로 프로젝트 배열들을 다 HashMap으로 사용한 기억이다.
데이터 읽기 성능 : HashMap > LinkedHashMap > HashTable > TreeMap
키 중복의 경우, 같은 키의 여러 value의 경우 Multimap 사용
정렬이 필요한 경우 TreeMap 사용 (<<<<검색에 있어서 가장 느리다.)
메모리 보다 성능이 우선일 경우 HashMap 사용 (검색에 관해 대부분 O(1) 성능인 HashMap 사용)
일정한 수행시간과 삽입 순서를 유지하는 경우 LinkedHashMap 사용 (입력순서가 중요할 때)
Map 클래스(<interface임)
HashMap, TreeMap 등 있음
HashMap
HashMap은 Map interface를 implements 한 클래스로서 중복을 허용하지 않는다.
Map의 특징인 key와 value의 쌍으로 이루어지며, key 또는 value 값으로써 null을 허용한다.
Hashtable
Hashtable Map interface를 implements 한 클래스로서 중복을 허용하지 않는다.
Map의 특징인 key와 value의 쌍으로 이루어지며, key 또는 value 값으로써 null을 허용하지 않는다.(HashMap과의 차이점)
TreeMap
TreeMap역시 중복을 허용하지 않으며, key와 value의 쌍으로 이루어져 있다.
HashMap과 다른 점은 SortedMap을 implements 하였으므로, key 값들에 대한 정렬이 이루어진다는 점이다.
내부적으로 RedBlack Tree로 저장됨, 키값에 대한 Compartor 구현으로 정렬 순서를 바꿀수 있다.
더보기
항상 공식 문서를 확인하고 정확한 명칭을 기억하려 노력하자

1. 기본 생성법

Map<K, V> name = new HashMap<>();
Map<String, Integer> intMap = new HashMap<>();
Java
복사

2. (Hash)Map의 메서드를 사용

.put(K, V) : Key에 Value 추가
//Key 값 intMap.put("일", 11); intMap.put("이", 12); intMap.put("삼", 11); intMap.put("사", 13);// 중복 key intMap.put("사", 12);// 중복 key
Java
복사
.keySet() : Map에 있는 Key만 출력 반환
//key 값 전체 출력(향상된 for문)for (String key: intMap.keySet()){ System.out.println(key); }
Java
복사
.values() : Map에 있는 Value만 출력 반환
//value 값 전체 출력 (향상된 for문)for (Integer value: intMap.values()){ System.out.println(value); } //위 중복 key에서 뒤에 실행된 value가 12인 코드가 위 13을 덮어 써서 12가 출력된다.
Java
복사
.get(Object K) : Key로 value값 반환
//key로부터 값 가져오기. get() System.out.println(intMap.get("삼"));
Java
복사