일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- series
- 다익스트라
- 이펙티브 자바
- dataframe
- 자바
- dfs
- java
- docker
- 포트앤어댑터 아키텍처
- 위상정렬
- disjoint set
- springboot
- 비트마스크
- 헥사고날 아키텍처
- 스프링
- 백준
- 파이썬
- 데이터 flow
- spring security
- pandas
- equals
- Redis
- BFS
- DP
- ddd
- UML
- 알고리즘
- JPA
- 문자열
- 세그먼트 트리
- Today
- Total
코딩못하는사람
배열 정렬 Array.sort() 본문
자바에서의 배열 정렬은 크게 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>이다.
다음과 같이 선언해 준다면 People클래스를 age 변수에 따라 정렬 가능해진다. 방법은 똑같다.
coding-factory.tistory.com/549를 보고 공부했습니다.
'자바 메모장 > 개념 및 문법' 카테고리의 다른 글
Immutable,mutable 객체 (0) | 2021.02.10 |
---|---|
JVM 메모리 구조 정리 (2) | 2021.02.09 |
StringBuilder를 쓰는 이유 (2) | 2021.02.07 |
printf,println의 차이와 소수점 자리 출력(백준 4344) (0) | 2021.02.06 |
문자열 String (0) | 2021.01.28 |