java.util.Arrays
배열을 다루기 편리한 static 메소드 제공
✨✨Arrays.메소드()
static String toString(타입[] a)
[1, 2, 3, 4, 5]
deepToString()
[[11, 22], [21, 22]]
static <T>T[] copyOf(T[] original, int newLength)
static <T>T[] copyOfRange(T[] original, int fromIndex, int toIndex)
int[] arr = {0, 1, 2, 3, 4};
int[] arr2 = Arrays.copyOf(arr, arr.length); //[0, 1, 2, 3, 4]
int[] arr3 = Arrays.copyOf(arr, 7); //[0, 1, 2, 3, 4, 0, 0]
int[] arr4 = Arrays.copyOfRange(arr, 2, 4); //[2, 3]
int[] arr5 = Arrays.copyOfRange(arr, 0, 7); //[0, 1, 2, 3, 4, 0, 0]
static void fill(Object[] a, Object val)
배열 a의 모든 요소를 특정 값 val로 초기화한다.
두 매개변수 모두 같은타입!
static void setAll(Object[] a, 람다식?)
int[] arr = new int[5];
Arrays.fill(arr, 9); //arr = [9, 9, 9, 9, 9]
Arrays.setAll(arr, (i) -> (int)(Marh.random()*5)+1); //1<= x <6
//arr = [1, 5, 2, 1, 1]
static void sort (Object[] a)
static int binarySearch(Object[] a, Object key)
배열 a에서 key를 찾아 인덱스를 반환
✨✨이진탐색 알고리즘 -> 정렬된 배열에만 가능하므로, 정렬 먼저!!!
✨✨중복이 있을 시 중복제거 후 !! ... 나중에 다시!
int[] arr = {3, 2, 0, 1, 4};
int idx = Arrays.binarySearch(arr, 2); //idx = -5 잘못됨!!
Arrays.sort(arr); //[0, 1, 2, 3, 4]
int idx = Arrays.binarySearch(arr, 2); //idx = 2 올바른 결과!
equals(Object[] a1, Object[] a2)
deepEquals(Object[] a1, Object[] a2)
static <T> List<T> asList(T... a)
배열 a를 고정 크기 + 읽기전용의 List로 변환하여 반환한다.
-> 따라서 크기를 변경, 추가, 삭제하려면 ✨new ArrayList
로 새 ArrayList 객체를 생성해야 한다.
여기서 ...
는 가변 매개변수 : 매개변수의 개수가 가변적, 개수 상관없음
List list = Arrays.asList(new Integer[]{1,2,3,4,5});
List list = Arrays.asList(1,2,3,4,5);
//list = [1, 2, 3, 4, 5]
(X) list.add(6); //UnsupportedOperationException 예외발생
List list = new ArrayList(Arrays.asList(1,2,3,4,5));
//변경하려면 이런식으로!!!*****
parallelXXX()
spliterator()
stream()
...다음에~~~
ex11_06
import java.util.Arrays;
public class Ex11_06 {
public static void main(String[] args) {
int[] arr = {0, 1, 2, 3, 4};
int[][] arr2D = {{11,22,33}, {21,22,23}};
//출력
System.out.println("arr = "+Arrays.toString(arr));
System.out.println("arr2D = "+Arrays.deepToString(arr2D));
//복사
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); //index2~3
int[] arr6 = Arrays.copyOfRange(arr, 0, 7); //index0~6
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));
//채우기
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문. 우항(배열)의 모든 요소를 좌항에 집어넣고 본문 시행
for(int i : arr7) {
// for (int x = 0; x < arr7.length; x++) {
// int i = arr7[x];
char[] graph = new char[i]; //랜덤값만큼의 길이를 갖는 문자 배열 생성
Arrays.fill(graph, '*'); //그 길이만큼 *로 채운다.
System.out.println(new String(graph)+i);
//***String과 char[]의 변환방법 -> JAVA_48
}
//비교
String[][] str2D = {{"aaa", "bbb"}, {"AAA", "BBB"}};
String[][] str2D2 = {{"aaa", "bbb"}, {"AAA", "BBB"}};
System.out.println(Arrays.equals(str2D, str2D2)); //1차원
System.out.println(Arrays.deepEquals(str2D, str2D2)); //다차원
//정렬과 이진검색
char[] chArr = {'c','d','a','e','b'};
System.out.println("chArr = "+Arrays.toString(chArr));
System.out.println("index of 'b' = "+Arrays.binarySearch(chArr, 'b'));
System.out.println("== After Sorting ==");
Arrays.sort(chArr);//**binarySearch하기 전엔 반드시 정렬먼저!!!
System.out.println("chArr = "+Arrays.toString(chArr));
System.out.println("index of 'b' = "+Arrays.binarySearch(chArr, 'b'));
}
}
arr = [0, 1, 2, 3, 4]
arr2D = [[11, 22, 33], [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 = [2, 6, 5, 6, 3]
**2
******6
*****5
******6
***3
false
true
chArr = [c, d, a, e, b]
index of 'b' = -4
== After Sorting ==
chArr = [a, b, c, d, e]
index of 'b' = 1