Array 클래스 - 배열 복사
📌 public static int[] copyOf(int[] original, int newLength)
: newLength의 길이만큼 복사.
새로운 배열 생성해서 복사 후 반환하는 메소드.
📌 public static int[] copyOfRange(int[] original, int from, int to)
: original에 전달된 배열을 인덱스 from부터 to 이전까지 복사.
📌 public static int[] arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
: 배열 src의 srcPos에서 배열 dest의 destPos로 length 길이만큼 복사.
Array 클래스 - 배열 비교
📌 public static boolean equals(int[] a, int[] b)
: a와 b 내용 비교 후 true 또는 false 반환.
저장된 값의 수, 순서, 내용이 모두 같아야 함.
📌 public static bolean equals(Object[] a, Object[] b)
: 참조하는 인스턴스의 내용 비교 후 값 반환.
Array 클래스 - 배열 정렬
📌 public static void sort(int[] a)
: 오름차순으로 정렬.
📌 public static void sort(Object[] a)
: 인스턴스의 참조 값을 저장하고 있는 배열에 대한 정렬.
Comparable 인터페이스 기반으로 정렬.
📌 interface Comparable
: int compareTo(Object o) 메소드 구현을 통해 인스턴스의 순서 판단 기준 결정.
💡 compareTo 구현 방법
① 인자로 전달된 o가 작으면, 양의 정수 반환.
② 인자로 전달된 o가 크면, 음의 정수 반환.
③ 인자로 전달된 o가 같으면, 0 반환.
Array 클래스 - 배열 탐색
📌 public static void binarySearch(int[] a, int key)
: 배열에서 key를 찾으면 key의 인덱스 값, 없으면 0보다 작은 수 반환.
📌 binarySearch 메소드는 이진 탐색 알고리즘을 기반으로 탐색함.
이진 탐색 알고리즘은 정렬된 데이터를 대상으로 하는 탐색 알고리즘임.
따라서, 정렬된 상태에서 binarySearch 메소드를 호출해야 함.
📌 public static void binarySearch(Object[] a, Object key)
: Comparable 인터페이스의 compareTo 메소드 기준.
compareTo 메소드가 0을 반환하면, key에 해당하는 인스턴스를 찾았다고 판단.
package array;
import java.util.Arrays;
class Student implements Comparable{
int id;
String name;
public Student(int id, String name) {
this.id = id;
this.name = name;
}
@Override
public int compareTo(Object o) {
Student s = (Student)o;
if(this.id > s.id) {
return 1; // 인자로 전달된 o가 작으면, 양의 정수 반환.
}
else if(this.id < s.id) {
return -1; // 인자로 전달된 o가 크면, 음의 정수 반환.
}
else {
return 0; // 인자로 전달된 o가 같으면, 0 반환.
}
}
@Override
public String toString() {
return id + " " + name;
}
}
public class ArrayTest {
public static void main(String[] args) {
int[] ar1 = {1, 30, 94, 28, 3, 842, 9};
Arrays.sort(ar1);
for(int i : ar1) {
System.out.print(i + " ");
}
System.out.println(); // 1 3 9 28 30 94 842
int ar1Index = Arrays.binarySearch(ar1, 9); // 9 찾기.
System.out.println("Index of 9 : " + ar1Index); // Index of 9 : 2
Student[] s= new Student[3];
s[0] = new Student(1204, "jin");
s[1] = new Student(1013, "jimin");
s[2] = new Student(1004, "hani");
Arrays.sort(s);
for(Student i : s) {
System.out.print(i + " ");
}
System.out.println(); // 1004 hani 1013 jimin 1204 jin
int sIndex = Arrays.binarySearch(s, new Student(1004, "who is 1004")); // 1004 찾기.
System.out.println("Who is 1004? : " + s[sIndex]); // Who is 1004? : 1004 hani
}
}
'Java > Java' 카테고리의 다른 글
[Java] 와일드카드(Wildcard) (0) | 2022.10.18 |
---|---|
[Java] 제네릭(Generics) (0) | 2022.10.18 |
[Java] StringTokenizer 클래스 (0) | 2022.10.17 |
[Java] Math 클래스와 난수 생성 (0) | 2022.10.17 |
[Java] BigInteger 클래스와 BigDecimal 클래스 (0) | 2022.10.17 |
댓글