배열과 관련된 연산을 할 때 유용하게 사용할 수 있는 클래스
copyOf(int[] original, int newlength)
Arrays.copyOf(arr1,arr1.length);
새로운 배열을 생성 후 복사
original에 전달된 배열을 첫 번째 요소부터 newLength의 길이만큼 복사
copyOfRange(int[] original, int from , int to)
Arrays.copyOfRange(arr1,1,4);
새로운 배열을 생성 후 복사
original에 전달된 배열을 인덱스 from 부터 to 이전 요소까지 복사
arraycopy(Object src, int srcPos, Object dext, int dextPos, int length)
System.arraycopy(org,1,copy,2,3);
기존의 존재하는 배열에 복사
배열 src의 srcPos에서 배열 dest의 destPos로 length만큼 복사
public static boolean equals(int[] a, int[] a2)
매개변수 a와 a2로 전달된 배열의
내용을 비교하여 true 또는 false 반환
for (int i=0; i<length; i++) {
Object o1 = a[i];
Object o2 = a2[i];
if (!(o1==null ? o2==null : o1.equals(o2)))
return false;
}
❗️ Arrays.equals()메소드는 배열의 인스턴스 하나하나를 비교하여 true false를 반환하게 됩니다. 각각의 인스턴스는 equals() 를 통해 비교하기 때문에, 만약 Object의 equals를 Override 하지 않은 클래스의 배열이라면 ex) Car[] 인스턴스 간의 equals가 참조값을 비교하게 되어 false가 반환됩니다.
public static void sort(int[] a)
정수를 오름차순으로 정렬해 줍니다.
❗️ 정수 대신 인스턴스를 정렬 할 경우 ❗️
인스턴스는 정렬하는데 기준이 필요하기 때문에
정렬할 인스턴스의 클래스에 Comparable 인터페이스를 구현 해주고 해당 인터페이스의 메소드인 compareTo 메소드를 원하는 정렬 기준으로 오버라이딩 해주어야 합니다.
compareTo(Object o)
return 값
- 양수 (비교한 두 수 위치 변경)
- 음수 (위치 변경 x)
- 0 (위치 변경 X)@Override public int compareTo(Object o) { // 나이의 오름차순 정렬 Person p = (Person) o; return this.age - p.age; }
오름차순으로 정렬하고 싶다면 전달된 o의 값이 더 작으면 양수를 반환, o의 값이 더 크면 음수를 반환, 같다면 0을반환하게 구현하면 됩니다.
class Person implements Comparable {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
@Override
public int compareTo(Object o) { // 나이의 오름차순 정렬
Person p = (Person) o;
return this.age - p.age;
}
@Override
public String toString() {
return name + ": " + age;
}
}
public class Main {
public static void main(String[] args) {
Person[] ar = new Person[3];
ar[0] = new Person("Lee", 29);
ar[1] = new Person("Goo", 15);
ar[2] = new Person("Soo", 37);
Arrays.sort(ar);
for (Person p : ar)
System.out.println(p);
}
}
public static int binarySearch(int[] a, int key)
binarySearch()는 탐색 이전에 데이터가 오름차순 정렬이 되어있어야 한다.
→ 배열 a 에서 key를 찾아서 있으면 key의 인덱스 값, 없으면 0보다 작은 수 반환
❗️ Array 의 binarySearch() 또한 Comparable 인터페이스의 compareTo() 메소드를 기반으로 일치 유무(return이 0인지) 를 판단하기 때문에 바로 위 person의 경우 이름이 다르고 나이만 일치할 경우에도 인덱스가 반환되게 됩니다.