Java 코딩 테스트 준비 - Collections, Arrays 클래스

기운찬곰·2023년 10월 2일
1
post-thumbnail

Overview

Java에서는 여러가지 도움을 주는 클래스가 존재하는데 Collections와 Arrays 클래스가 대표적이라고 생각한다. Collections는 컬렉션 타입(Collection, List, Set)의 경우에 도움을 주는 클래스이고, Arrays는 배열에 도움을 준다.

이번시간에는 Collections, Arrays 클래스에 대해 알아보도록 한다.


Collections 클래스

소개

  • Collection 인터페이스를 구현한 클래스(ex. List, Set, Queue 등)에 대해 객체생성, 정렬, 병합, 검색 등의 기능 수행을 안정적으로 도와주는 역할을 하는 유틸리티 클래스
  • 대표적으로 max, min, sort, shuffle, copy, reverse, binarySeach 등 정렬, 셔플, 탐색 같은 기능을 주로 사용한다.

주의. Collection 개념과 Collections 클래스는 별개로 봐야한다. (아주 진짜 헷갈리게 잘 만들어놨어...😂)

사용법

간단하다. 아래는 Collection 인터페이스를 구현한 클래스를 받아서 정렬을 수행하는 코드이다. 자바에서 정렬을 수행하는 방법에는 여러가지가 있다고 했는데 Collections.sort도 그 중 하나이다.

List<String> list = new LinkedList<String>();
list.add(“김철수”);
list.add(“김영희”);

Collections.sort(list);

Collections.binarySearch

자바 치고는 친절하게 이진탐색을 지원해주는 함수가 존재한다.

int index = Collections.binarySearch(list, element);
// list는 리스트, element는 탐색할 원소이다.

binarySearch()는 만약 반환값이 양수이면 찾고자 하는 원소의 인덱스값이고, 음수이면 탐색이 실패한 것이다. 즉, 원소를 찾지 못했음을 의미한다.


Arrays 클래스

소개

Arrays 클래스에는 배열을 다루기 위한 다양한 메소드가 포함되어 있습니다. Arrays 클래스의 모든 메소드는 클래스 메소드(static method)이므로, 객체를 생성하지 않고도 바로 사용할 수 있습니다.

copyOf() 메소드

copyOf() 메소드는 전달받은 배열의 특정 길이만큼을 새로운 배열로 복사하여 반환합니다.

copyOf() 메소드는 첫 번째 매개변수로 원본 배열을 전달받고, 두 번째 매개변수로 원본 배열에서 새로운 배열로 복사할 요소의 개수를 전달받습니다. 그리고 원본 배열과 같은 타입의 복사된 새로운 배열을 반환합니다.

이때 새로운 배열의 길이가 원본 배열보다 길면, 나머지 요소는 배열 요소의 타입에 맞게 기본값으로 채워집니다.

int[] arr1 = {1, 2, 3, 4, 5};

int[] arr2 = Arrays.copyOf(arr1, 3);
for (int i = 0; i < arr2.length; i++) {
    System.out.print(arr2[i] + " "); // 1 2 3
}

int[] arr3 = Arrays.copyOf(arr1, 10);
for (int i = 0; i < arr3.length; i++) {
    System.out.print(arr3[i] + " "); // 1 2 3 4 5 0 0 0 0 0
}

배열을 복사할 일이 있을때 (즉, 원본 배열은 가만이 놔둬야할 때) 사용하면 좋을 거 같네요.

copyOfRange() 메소드

copyOfRange() 메소드는 전달받은 배열의 특정 범위에 해당하는 요소만을 새로운 배열로 복사하여 반환합니다.

int[] arr1 = {1, 2, 3, 4, 5};

int[] arr2 = Arrays.copyOfRange(arr1, 2, 4);
for (int i = 0; i < arr2.length; i++) {
    System.out.print(arr2[i] + " "); // 3 4
}

sort() 메소드

sort() 메소드는 전달받은 배열의 모든 요소를 오름차순으로 정렬합니다. Collections와 비슷하죠?

int[] arr = {5, 3, 4, 1, 2};

Arrays.sort(arr);
for (int i = 0; i < arr.length; i++) {
    System.out.print(arr[i] + " ");
}

toString() 메서드

배열의 값을 확인해보고 싶어서 그냥 출력하면 값이 아니라 주소값이 나온다. 이를 ArrayList로 변화해서 출력하려고 해봤지만 그래도 주소값이 나온다. 왜 그런지 모르겠지만…

이 경우 Arrays.toString()을 사용하면 손쉽게 배열의 값을 출력할 수 있다. 이런건 좀 알아서 되던가ㅠ

int[] arr = { 1, 2, 3, 4, 5 };
System.out.println(Arrays.toString(arr));

fill() 메서드

배열의 모든 값을 같은 값으로 초기화하는 메서드이다. Arrays.fill()을 사용하지 않으면 for문을 사용해서 배열의 값을 일정하게 초기화해야한다. 생각보니 fill() 말고는 딱히 떠오르는 방법이 없긴 하네...

int[] arr = new int[10];

Arrays.fill(arr, 1); // 1로 전부 초기화

참고. Collections, Arrays 활용하는 코테 문제 예시

profile
velog ckstn0777 부계정 블로그 입니다. 프론트 개발 이외의 공부 내용을 기록합니다. 취업준비 공부 내용 정리도 합니다.

0개의 댓글

관련 채용 정보