출처 : 열혈 Java 프로그래밍
java.util.Arrays 클래스는 배열 조작에 도움을 주는 메소드들로 구성되었다. 배열의 복사, 비교, 정렬, 탐색 관련 코드를 쉽게 작성할 수 있다.
public static int[] copyOf(int[] original, int newLength)
public static int[] copyOfRange(int[] original, int from, int to)
복사 해서 새로운 배열을 생성하고 그 참조값을 반환한다.
public static boolean equals(int[] a, int[] a2)
public static boolean equals(Object[] a, Object[] a2)
equals
메소드를 사용함 equals
를 객체에서 오버라이딩 해주자 public static void sort(int[] a)
public static void sort(Object[] a)
int compareTo(Object O)
메소드를 구현해야 함 구현 방법은 다음과 같다. 정렬 기준을 정하고 정렬 후에
굉장히 헷갈리는데 그냥 이렇게 생각하면 된다.
오름차순 : this - o
반환
내림차순 : o - this
반환
import java.util.Arrays;
class Number{
int num;
public Number(int n){
num = n;
}
@Override
public String toString() {
return "Number{" +
"num=" + num +
'}';
}
}
public class Main {
public static void main(String[] args) {
Number[] arr = { new Number(3), new Number(2), new Number(1)};
Arrays.sort(arr,(a,b)->a.num-b.num); //오름차순
for (Number n : arr){
System.out.println("n = " + n);
}
System.out.println("--------------------");
Arrays.sort(arr,(a,b)->b.num-a.num); //내림차순
for (Number n : arr){
System.out.println("n = " + n);
}
}
}
위와 같이 람다식을 활용해 비교 조건에 대한 식을 인자로 넘길 수 있다.
(a,b)->a-b
: 오름차순 (a,b)->b-a
: 내림차순 public static int binarySearch(int[] a, int key)
이진탐색으로 배열 a에서 key를 찾아서 있으면 key의 인덱스 값 반환, 없으면 음수를 반환한다.
이 메소드는 이진탐색을 사용하기 때문에 정렬된 상태의 배열에만 사용해야 한다.
그리고 Object 형에 사용할 경우 Object 형에 오버라이딩 한 compareTo 메소드가 0이 반환되는 원소를 찾았다고 판단한다.
정말 깊이 있는 글이었습니다.