일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 마곡속눈썹펌
- ai/bigdata
- 1차면접
- 프로그래머스
- 다시보기
- 백준
- 마곡속눈썹연장
- 포스코
- 정렬
- 딥러닝
- 삼성 SW역량테스트 기출
- 삼성SW역량테스트
- 추석트래픽
- 등촌동속눈썹펌
- OS
- 삼성
- BOJ
- Java
- 시뮬레이션
- 운영체제
- 코딩테스트
- 알고리즘
- 투포인터
- level2
- 리트코드
- 직무면접
- 카카오
- leetcode
- 등촌동속눈썹연장
- 수학
- Today
- Total
기록하는 습관을 들이자
Java HashMap 클래스와 메소드 본문
이번에는 구현 시 많이 쓰이게 되는 Map 클래스에 대해 정리해보고자 한다.
Map은 기본적으로 <key, value> 쌍으로 매핑해 주는 것으로써 key는 중복될 수 없고, value는 중복 가능하다는 특징을 가지고 있다.
자바의 Map 인터페이스와 클래스 구조는 다음과 같다.
1. HashMap 클래스의 기본 메소드
HashMap 메소드 | 설명 |
.put(key, value) | (key, value) 쌍의 새로운 데이터 추가 |
.get(key) | key값에 해당하는 value값 반환 |
.remove(key) | key값에 해당하는 데이터 삭제 |
.keySet() | key값들 집합 반환 |
.values() | value값들 집합 반환 |
.size() | map 사이즈 반환 |
.isEmpty() | 비어있는지 여부 반환(boolean) |
★ 중요 메소드 - .getOrDefault(key, default 반환 값) ★
.getOrDefault() 메소드는 유용하게 쓰이니 추가적으로 기억해두자!
해당 메소드는 key값에 해당하는 value 값이 존재하면 해당 value 값을 반환해주고 key 값에 해당하는 데이터가 없다면 default 반환 값을 반환한다.
해시를 통해 특정 key 값에 대한 value 값을 계속 업데이트 해줄 때 사용된다!!
2. Key나 Value의 제너릭 타입으로 LinkedList가 쓰이는 경우
HashMap의 제너릭 타입으로 <String, LinkedList<String>>과 같이 리스트가 올 수 있다. value 값에 리스트가 오게 되면 데이터를 어떻게 추가하는지 살펴보자.
[ 새로운 데이터 추가 ]
public void putToMap(String name) {
String firstLetter = name.substring(0, 1);
List<String> names = testMap.get(firstLetter);
if (names == null) {
names = new LinkedList<String> ();
testMap.put(firstLetter, names);
}
names.add(name);
}
HashMap의 .get(key) 메소드를 이용해 LinkedList를 불러온 뒤 이전에 들어온 적이 없었다면(null이라면) 리스트 객체를 생성해주고 put()해준다.
3. keySet() 기준 정렬과 values() 기준 정렬 방법
HashMap에 저장된 데이터를 일정한 순서를 가지고 가져와야하는 경우에는 정렬을 사용한다.
[ keySet() 기준 오름차순 정렬 ]
아래는 key 값의 오름차순대로 데이터를 반환해오는 방법이다.
먼저, keySet을 List 형태로 변환한 뒤
List<Integer> keySetList = new ArrayList<>(hm.keySet());
Collections.sort() 메소드를 활용하여 정렬해준다.
Collections.sort(keySetList, new Comparator<Integer>(){
public int compare(Integer a, Integer b){
if(a < b)
return -1;
else
return 1;
}
});
for(Integer a : keySetList){
System.out.println(a+" "+hm.get(a));
}
[ values() 기준 오름차순 정렬 ]
위 방법과 같이 먼저 .keySet()을 List로 변환해준다.
List<Integer> keySetList = new ArrayList<>(hm.keySet());
그런 다음 Collections.sort() 메소드를 이용해 정렬해주되, 정렬의 기준이 value 데이터가 된다.
Collections.sort(keySetList, new Comparator<Integer>(){
public int compare(Integer a, Integer b){
if(hm.get(a) < hm.get(b))
return -1;
else
return 1;
}
});
for(Integer a : keySetList){
System.out.println(a+" "+hm.get(a));
}
정리 끝!
'알고리즘 > Java' 카테고리의 다른 글
[알고리즘] 투 포인터(Two-Pointer Algorithm) 알고리즘 (0) | 2020.05.06 |
---|---|
BigDecimal 클래스 - 오차 없는 부동 소수점 연산을 위한 클래스 (0) | 2020.04.15 |
알고리즘 구현 시 자주 등장하는 유형(개념) - JAVA (0) | 2020.04.05 |
Java 정렬(Sorting) (0) | 2020.04.05 |
Java Set (Set 인터페이스, HashSet, TreeSet, LinkedHashSet) (0) | 2020.04.05 |