새소식

인기 검색어

Programming/Java

[Java] Arrays

  • -

C, C++을 배울때는 배열에 익숙해져있다가 이후로 리스트만을 사용하는 Python을 주로 사용했다보니 배열과 리스트가 동시에 존재하는 Java에서 혼동이 왔었다.

배열인지 리스트인지에 따라 정렬하는 방법들이 상이했고 같은 리스트에서도 정렬하는 방법들이 몇가지 존재했었다.

배열이 무엇이고, 리스트가 무엇인지보단 각각의 클래스들이 제공하는 함수가 무엇이 있는지 확인하고 공부해보고자 한다.

 

  1. Arrays

imoprt java.util.Arrays;

Arrays는 java.util 패키지 내에 존재한다. 위 코드를 통해 import 할 수 있다.

 

Arrays 클래스에는 배열을 다루기 위한 다양한 메소드가 포함되어 있다.

항목 정렬, 항목 검색, 항목 비교 등의 기능을 가진 메소드를 제공한다.

Arrays 클래스의 모든 메소드는 정적 메소드(static method)이므로, 객체를 생성하지 않고도 바로 사용할 수 있다.

 

  2. 대표적인 Arrays 메소드

● 배열 복사

Arrays.copyOf(arr1, arr1.length);

- arr1 배열에서 arr1.length만큼을 복사한다.

 

Arrays.copyOfRange(arr1, index1, index2);

- arr1 배열의 index1부터 index2까지 복사한다.

 

 

● 항목 정렬

Arrays.sort(arr);

기본 타입 또는 참조 타입의 String 배열은 위와 같은 코드를 통해, 사전순(오름차순)으로 정렬할 수 있다.

Arrays.sort(arr, Collections.reverseOrder());

Collections 클래스의 reverseOrder()를 사용해 내림차순으로 정렬할 수 있다.

 

Array.sort()은 그럼 어떤 정렬을 사용할까?

이는 2가지의 경우로 나뉜다.

 

 

 

만약 사용자 정의 클래스 타입이라면, Comparable 인터페이스를 구현하고 있어야 한다.

이는 리스트의 정렬과 비교하면서 살펴보자.

 

● 항목 검색

String[] arr = {"hello", "hi"}; Arrays.sort(arr); Arrays.binarySearch(arr, "hello");

Arrays.binarySearch() 메소드를 사용해 배열 내 원하는 항목을 검색할 수 있다.

메소드 사용시, 매개 변수로 사용되는 배열이 정렬이 되지 않았거나 배열에 없는 항목을 찾으면 음수값을 반환한다.

따라서, 해당 메소드 사용시, 정렬된 배열을 매개변수로 사용해야한다.

 

 

● 항목 비교

Arrays.equals(arr1, arr2); Arrays.deepEquals(arr1, arr2);

arr1 배열과 arr2 배열을 비교한다. 이는 주소값이 아닌 배열의 내용을 비교한다.

deepequal과 equal의 차이점은 따로 글을 작성하면서 알아보자.

 

 

 

 

 

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.