자바 컬렉션 프레임워크 도구

Seoyeon·2025년 12월 18일

코딩테스트

목록 보기
4/4

1. Collection

① 중복을 허용하지 않는 HashSet

  • 특징: 순서가 없고, 중복된 값은 알아서 제거
  • 언제 쓰나? "이미 나온 숫자인가?" 확인하거나, 중복을 제거한 숫자 개수를 셀 때.
  • 속도: 매우 빠름 (데이터가 아무리 많아도 contains로 찾는 속도가 일정함)

② 키(Key)와 값(Value)의 쌍 HashMap

  • 특징: 사전(Dictionary)과 같음.이름 : 점수 처럼 연관된 데이터를 저장합니다.
  • 언제 쓰나? "완주하지 못한 선수 찾기", "각 과일이 몇 개씩 나왔는지 세기" 등.

2. 정렬(Sorting)의 모든 것

단순 오름차순 외에 코테에서 자주 나오는 정렬 기법

① 내림차순 (큰 수부터)

기본 정렬은 오름차순. 반대로 정렬하려면 Collections.reverseOrder()를 사용

주의: 내림차순을 쓸 때는 int가 아닌 Integer 같은 객체 타입 배열/리스트여야 함

Integer[] arr = {1, 3, 2, 5, 4};
Arrays.sort(arr, Collections.reverseOrder()); // 5, 4, 3, 2, 1

② 2차원 배열 정렬 (커스텀 정렬)

미로 좌표 (x, y)를 정렬하거나, [국어점수, 영어점수]처럼 배열을 정렬할 때 씀

int[][] score = {{80, 90}, {100, 70}, {80, 80}};

// 첫 번째 숫자(국어) 기준 오름차순, 같다면 두 번째(영어) 기준 오름차순
Arrays.sort(score, (o1, o2) -> {
    if(o1[0] == o2[0]) {
        return o1[1] - o2[1];
    }
    return o1[0] - o2[0];
});

3. 우선순위 큐(자동으로 정렬): PriorityQueue

일반적인 큐와 달리 들어온 순서와 상관없이 가장 작은 값(또는 큰 값)이 맨 앞으로 옴!

  • 언제 쓰나? 데이터를 계속 넣으면서, 그때마다 가장 작은 값을 꺼내야 할 때. (정렬을 매번 새로 할 필요가 없어 매우 효율적)

4. Collections 클래스

리스트를 다룰 때 Collections라는 클래스가 제공하는 기능들

메서드기능
Collections.max(list)리스트에서 최댓값 찾기
Collections.min(list)리스트에서 최솟값 찾기
Collections.reverse(list)리스트 순서를 거꾸로 뒤집기
Collections.frequency(list, 값)특정 값이 리스트에 몇 개 있는지 세기
Collections.replaceAll(list, 옛값, 새값)리스트 내 모든 값을 교체하기

요약: 무엇을 언제 쓸까?

  1. 순서가 중요하고 넣었다 뺐다 한다? -> ArrayList
  2. 중복은 싫다, 있는지 없는지만 궁금하다? -> HashSet
  3. 짝꿍(ID-이름) 데이터가 있다? -> HashMap
  4. 넣을 때마다 알아서 정렬됐으면 좋겠다? -> PriorityQueue
  5. 다 넣고 한 번만 정렬하면 된다? -> Arrays.sort() 또는 Collections.sort()

0개의 댓글