HashMap & HashSet

최수연·2026년 2월 1일

Java 코딩테스트

목록 보기
5/8

HashMap


HashMap이란?

  • key와 value로 구성되어 있는 순서쌍
  • key는 중복을 허용하지 않고, value는 중복을 허용함
  • 요소의 저장 순서가 없음

HashMap의 생성

HashMap<String, String> map = new HashMap<>();

HashMap 메서드

// key & value 추가
map.put("people", "사람");
map.put("baseball", "야구");

// key에 대한 value 값 추출
map.get("people");    // 사람

// key 값에 해당되는 아이템(key, value) 삭제
map.remove("people");    // 사람

// map의 크기
map.size()

// key 값만 추출(중복x) : Set<key 자료형> 반환
map.keySet();

// value 값만 추출(중복o) : Collection<value 자료형> 반환
map.values();

// key값/value값이 존재하는지 여부
map.containsKey("people");    // false
map.containsValue("야구");    // true

HashMap의 정렬

  • HashMap을 다루다 보면 HashMap을 특정 기준에 맞춰 정렬해야 할 경우가 있다. HashMap은 동시에 두 개의 데이터를 다루기 때문에 정렬 방식이 다양하고 복잡하기 때문에 자세히 공부할 필요가 있다.

① Key 값을 기준으로 정렬

  • HashMap의 keySet 메서드를 이용하여 List 컬렉션에 담음
  • 오름차순 시 Collection.sort(), 내림차순 시 Collection.reverse() 사용
HashMap<String, Integer> map = new HashMap<>();

map.put("A", 10);
map.put("B", 20);
map.put("C", 30);
map.put("D", 40);

List<String> keySet = new ArrayList<>(map.keySet());

// key 값으로 오름차순 정렬
Collection.sort(keySet);        // A B C D
// key 값으로 내림차순 정렬
Collections.reverse(keyset);    // D C B A

② Value 값을 기준으로 정렬

  • HashMap의 keySet 메서드를 이용하여 List 컬렉션에 담음
  • comparator을 사용하여 정렬
  • comparator은 람다 표현식으로 간단하게 표현할 수 있음
HashMap<String, Integer> map = new HashMap<>();

map.put("A", 10);
map.put("B", 20);
map.put("C", 30);
map.put("D", 40);

List<String> keySet = new ArrayList<>(map.keySet());

// value 값으로 오름차순 정렬
keySet.sort(new Comparator<String>() {
	
	@Override
	public int compare(String o1, String o2) {
		return map.get(o1).compareTo(map.get(o2));
	}
});

// value 값으로 내림차순 정렬
keySet.sort((o1, o2) -> {map.get(o2).compareTo(map.get(o2))};

주의) compareTo의 앞 뒤 파라미터에는 참조형 변수만 접근 가능




HashSet


HashSet이란?

  • Set의 성질을 그대로 상속받는 Hash 데이터
  • 자료의 순서가 없음
  • 중복 값이 허용되지 않음
  • null 값을 허용

HashSet의 생성

HashSet<String> set = new HashSet<>();

HashSet 메서드

// 요소 값 추가
set.add("tiger");

// 요소 값 삭제
set.remove("tiger");

// set의 크기
set.size();

// 요소 값 검색
set.contains("lion");    // false
  • HashSet의 add 메서드
    : 추가하는 요소가 내부에 존재하지 않는다면 값을 추가하고 true 반환
    내부에 존재한다면 false 반환
  • HashSet의 remove 메서드
    : 추가하는 요소가 내부에 존재한다면 값을 삭제하고 true 반환
    내부에 존재하지 않는다면 false 반환

0개의 댓글