package ch11;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class Ex11_6 {
public static void main(String[] args) {
int[] arr = {0,1,2,3,4};
int[][] arr2D = {{11,12,13}, {21,22,23}};
// 출력 :: toString(arr[]), deepToString(arr[][])
System.out.println("arr = "+Arrays.toString(arr));
System.out.println("arr2D = "+Arrays.toString(arr2D));
System.out.println("arr2D = "+Arrays.deepToString(arr2D));
System.out.println();
// 복사 :: copyOf(arr[], 길이), copyOfRange(arr[], from, to)
int[] arr2 = Arrays.copyOf(arr, arr.length);
int[] arr3 = Arrays.copyOf(arr, 3);
int[] arr4 = Arrays.copyOf(arr, 7);
int[] arr5 = Arrays.copyOfRange(arr, 2, 4);
int[] arr6 = Arrays.copyOfRange(arr, 0, 7);
System.out.println("arr2 = "+Arrays.toString(arr2));
System.out.println("arr3 = "+Arrays.toString(arr3));
System.out.println("arr4 = "+Arrays.toString(arr4));
System.out.println("arr5 = "+Arrays.toString(arr5));
System.out.println("arr6 = "+Arrays.toString(arr6));
System.out.println();
// 채우기 :: fill(arr[], 값), setAll(arr[], 람다식)
int[] arr7 = new int[5];
Arrays.fill(arr7, 9);
System.out.println("arr7 = "+Arrays.toString(arr7));
Arrays.setAll(arr7, i -> (int)(Math.random()*6 + 1)); //1<=x<7
System.out.println("arr7 = "+Arrays.toString(arr7));
for (int i : arr7) {
char[] charArr = new char[i]; //길이 1~6 랜덤
Arrays.fill(charArr, '*');
System.out.println(new String(charArr)+i); //char[] -> String :: new String(char[])
}
System.out.println();
// 동등비교 :: equals(arr1[], arr2[]), deepEquals(arr1[][], arr2[][])
String[][] str2D = new String[][] {{"aaa","bbb"}, {"AAA","BBB"}};
String[][] str2D2 = new String[][] {{"aaa","bbb"}, {"AAA","BBB"}};
System.out.println("Arrays.equals(str2D, str2D2) :: "+Arrays.equals(str2D, str2D2));
System.out.println("Arrays.deepEquals(str2D, str2D2) :: "+Arrays.deepEquals(str2D, str2D2));
System.out.println();
// 정렬 :: sort(arr[])
// 탐색 :: sort() -> binarySearch(arr[], ?)
char[] chArr = {'A','D','C','B','E'};
System.out.println("chArr = "+Arrays.toString(chArr));
System.out.println("indexOf 'B' = "+Arrays.binarySearch(chArr, 'B')); //-2 가 나옴, 오름차순 정렬이 안돼서 그럼!
System.out.println("== After sort() ==");
Arrays.sort(chArr);
System.out.println("chArr = "+Arrays.toString(chArr));
System.out.println("indexOf 'B' = "+Arrays.binarySearch(chArr, 'B'));
System.out.println();
// 배열을 List로 변환 :: asList(Object...)
List list = Arrays.asList(new Integer[] {1,2,3,4,5});
List list2 = Arrays.asList(1,2,3,4,5); //1)각 요소가 Integer로 오토박싱이 일어나서
List list3 = Arrays.asList(arr); //2)
List list4 = new ArrayList(Arrays.asList(arr)); //2)arr 그자체는 참조형 데이터인데, 각 요소는 기본형 데이터다.
System.out.println("list = "+list);
System.out.println("list2 = "+list2); //1)참조형 데이터로 받아져 각 list의 요소로 출력함
System.out.println("list3 = "+list3); //2)그래서 이렇게 통으로 출력할 때 arr을 한 요소로 보고 참조값 해시(주소)를 출력한다.
System.out.println("list4 = "+list4);
// list4.add(9);
// list.add(6); -> UnsupportedOperationException, 크기 변경 불가능!!!
// 크기 변경, 추가, 삭제하려면? => new ArrayList(Arrays.asList(1,2,3,4,5))
//2)따라서 아래처럼 반복문을 사용해 add해야 한다!!
List list5 = new ArrayList();
for (int i : arr) {
list5.add(i);
}
System.out.println("list5 = "+list5); //..맞나?? asList 어케 하지
}
}
->
arr = [0, 1, 2, 3, 4]
arr2D = [[I@7d6f77cc, [I@5aaa6d82]
arr2D = [[11, 12, 13], [21, 22, 23]]
arr2 = [0, 1, 2, 3, 4]
arr3 = [0, 1, 2]
arr4 = [0, 1, 2, 3, 4, 0, 0]
arr5 = [2, 3]
arr6 = [0, 1, 2, 3, 4, 0, 0]
arr7 = [9, 9, 9, 9, 9]
arr7 = [6, 1, 5, 4, 2]
******6
*1
*****5
****4
**2
Arrays.equals(str2D, str2D2) :: false
Arrays.deepEquals(str2D, str2D2) :: true
chArr = [A, D, C, B, E]
indexOf 'B' = -2
== After sort() ==
chArr = [A, B, C, D, E]
indexOf 'B' = 1
list = [1, 2, 3, 4, 5]
list2 = [1, 2, 3, 4, 5]
list3 = [[I@19e1023e]
list4 = [[I@19e1023e]
list5 = [0, 1, 2, 3, 4]