코딩못하는사람

배열 정렬 Array.sort() 본문

자바 메모장/개념 및 문법

배열 정렬 Array.sort()

공부절대안함 2021. 2. 8. 16:59

자바에서의 배열 정렬은 크게 3가지로 나눈다.

오름차순or 내림차순// 기본타입 or String타입이냐  //객체 배열이냐

 

1. 오름차순으로 배열하기.

 

1-1 기본타입 배열

오름차순으로 배열에는 java.util패키지의 Arrays클래스를 사용하면 된다.

int [] a=new int []{4,3,2,1}로  선언했다고 하면.

Arrays.sort(a)를 해주면 a배열 자체를 정렬된 배열로 바꿔준다. >>[1,2,3,4]

 

2-1 String타입 배열

String타입은 기본타입은 아니지만 오름차순에서는 같은 방법으로 쓰인다. 아스키코드의 순서에 따라 배열 해준다.

String [] s=new String []{"bb","cc","aa"}

위와 같이 Arrays.sort(s)를 해주면 [aa, bb, cc]으로 만들어줄 것이다.

(배열을 출력해서 보고싶다면 Arrays.toString(s)를 해주면 된다.)

 

2.내림차순으로 배열하기.

 

2-1기본타입 배열

내림차순으로 배열하기 위해서는Collections 클래스의 reverseOrder()메소드를 사용해 주어야 한다.

그런데 기본타입 배열로는는 하지 못하고 wrapper클래스 배열로 바꿔주어야 사용 가능했다.

(int배열이였다면 Integer로 바꿔주어야함  왜? compareTo메소드가 객체를 받기때문에)

Integer [] a=new Integer[]{1,2,3};

Arrays.sort(a,Collections.reverseOrder()); 를 해주면 [3,2,1]로 변환된다.

(내림차순 정렬은 시간이 좀 더 걸리므로 문제를 풀때 복잡하지 않은 케이스라면 인덱스를 뒤에서부터 세는 것이 속도가 더 빠를 것이다.)

 

2-2 String타입 배열

String타입의 배열도 같은 방식으로 내림차순 정렬이 가능하다.

 

3.객체 타입 배열

객체 타입 배열에서는 객체 클래스가 Comparable인터페이스의 compareTo() 메서드를 구현하고 있어야 정렬이 가능하다.(class 에 Comparable을 implements해주자)

compareTo메서드를 override해서 정렬을 하고자 하는 변수에 대해서 자신이 작으면 -1 같으면 0 크다면 1을 반환하는 함수로 만들어 주어야 한다.

compareTo메서드를 구현하면 내림차순으로도 정렬 할 수 있다.

코드를 보고 이해해야 쉽다.

class에 Comparable을 implements 해줄 때 주의할점은 뒤에 비교하고자 하는 클래스를 제너릭형식으로 받아줘야 한다. API를 보면 Comparable<T>로 나와있다. 따라서 override할때 T의 데이터 타입을 매개변수로 받아주게 된다. (제너릭 형식을 안쓰고해서 해맸다) 다음과 같으면

class People implements Comparable<People>이다.

 

 

https://coding-factory.tistory.com/549

다음과 같이 선언해 준다면 People클래스를 age 변수에 따라 정렬 가능해진다. 방법은 똑같다.

 

coding-factory.tistory.com/549를 보고 공부했습니다.

 

Comments