반응형
Arrays Class
배열을 조작하는데 필요한 기능들을 제공하는 Class
배열의 복사, 비교, 정렬, 탐색 등의 기능을 제공.
Arrays Class의 주요 기능
copyof : 배열의 복사
equals : 배열의 비교
sort : 배열의 정렬
binarySearch : 배열의 탐색
*sort와 serch는 set이다.
▶ 주요 메서드
메서드 | 설명 |
static String toString(boolean[] a) static String toString(byte[] a) static String toString(char[] a) static String toString(short[] a) static String toString(int[] a) static String toString(long[] a) static String toString(float[] a) static String toString(double[] a) static String toString(Object[] a) |
배열의 출력 |
copyOf(), copyOfRange() int[] arr = {0, 1, 2, 3, 4}; int[] arr2 = Arrays.copyOf(arr, arr.length); //arr2 = [0, 1, 2, 3, 4] int[] arr3 = Arrays.copyOf(arr, 3); //arr3 = [0, 1, 2] int[] arr4 = Arrays.copyOf(arr, 7); //arr4 = [0, 1, 2, 3, 4, 0, 0] int[] arr5 = Arrays.copyOfRange(arr, 2, 4); //arr5 = [2, 3] <= 4는 불포함 int[] arr6 = Arrays.copyOfRange(arr, 0, 7); //arr6 = [0, 1, 2, 3, 4, 0, 0] |
배열의 복사 새로운 배열을 생성해서 반환한다. |
fill(), setAll() int[] arr = new int[5] Arrays.fill(arr, 9); // arr = [9, 9, 9, 9, 9] Arrays.setAll(arr, (i) -> (int)(Math.random() * 5) + 1); // arr = [1이상 6이하의 난수] |
배열 채우기 |
sort(), birnarySearch() int[] arr = {3, 2, 0, 1, 4}; Arrays.sort(arr); // binarySearch를 하기 위해서는 정렬을 해야한다. (이진 검색) int idx = Arrays.binarySearch(arr, 2); |
배열의 정렬과 검색 |
deepToString() int[][] arr2D = {{11, 22}, {21, 22}}; // [[11, 12], [21, 22]] |
다차원 배열의 출력 |
deepEquals() String[][] str2D = new String[][] {{"aaa", "bbb"}, {"AAA", "BBB"}}; String[][] str2D2 = new String[][]{{"aaa", "bbb"}, {"AAA", "BBB"}}; Arrays.deepEquals(str2D, str2D2); // true |
다차원 배열의 비교 |
asList(Object... a) // 가변 매개변수 (가변 : 개수가 정해져 있지 않음.) List list = Arrays.asList(new Integer[] {1, 2, 3, 4, 5}); List list = Arrays.asList(1, 2, 3, 4, 5); list.add(6); // UnsupportedOperrationException 예외 발생 (읽기 전용임) List list = new ArrayList(Arrays.asList(1, 2, 3, 4, 5)); |
배열을 List로 반환 |
▶ 구현
public class arr {
public static void main(String[] args) {
double[] arOrg = {1.1, 1.2, 1.3, 1.4, 1.5};
// arOrg와 동일한 배열을 만든다.
double[] arCpy = Arrays.copyOf(arOrg, arOrg.length);
// arOrg의 일부분을 배열로 만든다. (index '1'부터 '3'전 까지)
double[] arPart = Arrays.copyOfRange(arOrg, 1, 3);
arCpy[0] = 0;
for(double dd : arCpy) {
System.out.println(dd);
}
System.out.println("--------------------------------------");
// 이미 할당된 배열이 있고 값만 카피한다.
double[] arr = new double[3];
System.arraycopy(arOrg, 1, arr, 0, 3);
for (double d : arr){
System.out.println(d);
}
// 배열의 비교
if (true == Arrays.equals(arOrg, arCpy)){
System.out.println("true");
}
// 배열의 정렬
int[] ar1 = {42, 4, 24, 7, 1, 0};
Arrays.sort(ar1);
for (int a : ar1){
System.out.println(a);
}
// 특정 Object의 배열을 정렬.
// Coparealbe Interface를 구현 => compareTo()함수를 구현
person[] arPerson = new person[4];
arPerson[0] = new person("aaa", 10);
arPerson[1] = new person("bbb", 320);
arPerson[2] = new person("ccc", 42);
arPerson[3] = new person("ddd", 22);
Arrays.sort(arPerson);
for(person p : arPerson){
System.out.println(p);
}
// 특정 위치의 인덱스를 찾는다.
int idx = Arrays.binarySearch(arPerson, new person("aaa", 10));
System.out.println(idx);
}
}
public static void main(String[] args) {
// 배열의 출력
// static String toString(boolean[] a)
// static String toString(byte[] a)
// static String toString(char[] a)
// static String toString(short[] a)
// static String toString(int[] a)
// static String toString(long[] a)
// static String toString(float[] a)
// static String toString(double[] a)
// static String toString(Object[] a)
// 배열의 복사
// copyOf(), copyOfRange()
int[] arr = {0, 1, 2, 3, 4};
int[] arr2 = Arrays.copyOf(arr, arr.length); //arr2 = [0, 1, 2, 3, 4]
int[] arr3 = Arrays.copyOf(arr, 3); //arr3 = [0, 1, 2]
int[] arr4 = Arrays.copyOf(arr, 7); //arr4 = [0, 1, 2, 3, 4, 0, 0]
int[] arr5 = Arrays.copyOfRange(arr, 2, 4); //arr5 = [2, 3] <= 4는 불포함
int[] arr6 = Arrays.copyOfRange(arr, 0, 7); //arr6 = [0, 1, 2, 3, 4, 0, 0]
// 배열 채우기
// fill(), setAll()
int[] arr7 = new int[5];
Arrays.fill(arr7, 9); // arr = [9, 9, 9, 9, 9]
Arrays.setAll(arr7, (i) -> (int)(Math.random() * 5) + 1); // arr = [1이상 6이하의 난수]
// 배열의 정렬과 검색
// sort(), birnarySearch()
int[] arr8 = {3, 2, 0, 1, 4};
Arrays.sort(arr8); // binarySearch를 하기 위해서는 정렬을 해야한다. (이진 검색)
int idx = Arrays.binarySearch(arr8, 2);
// 다차원 배열의 출력
// deepToString()
int[][] arr2D = {{11, 22}, {21, 22}}; // [[11, 12], [21, 22]]
// 다차원 배열의 비교
// deepEquals()
String[][] str2D = new String[][] {{"aaa", "bbb"}, {"AAA", "BBB"}};
String[][] str2D2 = new String[][]{{"aaa", "bbb"}, {"AAA", "BBB"}};
Arrays.deepEquals(str2D, str2D2); // true
// 배열을 list로 반환
// asList(Object... a) 가변 매개변수 (가변 : 개수가 정해져 있지 않음.)
List list1 = Arrays.asList(new Integer[] {1, 2, 3, 4, 5});
List list2 = Arrays.asList(1, 2, 3, 4, 5);
//list.add(6); // UnsupportedOperrationException 예외 발생 (List는 읽기 전용임)
List list3 = new ArrayList(Arrays.asList(1, 2, 3, 4, 5));
}
반응형
'JAVA' 카테고리의 다른 글
[Java] Collections Framework - Map (0) | 2022.07.26 |
---|---|
[Java] Collections Framework - Set (0) | 2022.07.26 |
[Java] Collections Framework - Stack & Queue (0) | 2022.07.21 |
[Java] Collections Framework - List Interface (0) | 2022.07.21 |
[Java] Collections Framework (0) | 2022.07.21 |