Array 에는 배열사용을 지원하기 위한 여러가지 static 메서드들이 들어있다.
복사는 한 배열에 들어있는 값들을 다른 배열로 복제하는 것을 말한다. 참조만 복사하는게 아니라 완전히 복사해야 각각의 데이터가 별개의 메모리를 갖는다.
int[] array1 = {1,3,5,7,9,11,13,15};
int[] array2 = Arrays.copyOf(array1, array1.length);
for (int n : array1) {
System.out.print(n + " ");
}
System.out.println();
for (int n : array2) {
System.out.print(n + " ");
}
System.out.println();
배열을 채우는 방법은 여러가지가 있다. 초기화를 하고 싶을 때 fill 을 사용한다.
int[] array3 = new int[7];
Arrays.fill(array3, 7);
for (int n : array3) {
System.out.print(n + " ");
}
System.out.println();
이거는 배열에 들어있는 내용을 확인하기 위한 용도이다. for 나 while 문으로 확인하기 귀찮으니까 요긴하게 사용할 수 있다.
int[] array5 = new int[10];
Arrays.setAll(array5, (i) -> (int)(Math.random()*10)+1);
System.out.println(Arrays.toString(array5));
배열을 정렬한다. sort 메서드 하나로 정렬되니까 일이 쉽다.
배열의 이진검색은 sort로 정렬이 되어야 제대로된 검색을 표시한다. 정렬하지 않은 상태에서 이진검색을 하면 -5 같은 잘못된 값이 나온다.
// ----- 배열 정렬(sort) -----
printTitle("배열 정렬");
int[] array4 = {2,6,4,8,20,14,18,16,12,10};
Arrays.sort(array4);
int key = 12;
System.out.println(Arrays.toString(array4));
// ----- 배열 이진검색 -----
printTitle("배열 이진검색");
int index = Arrays.binarySearch(array4, key);
System.out.println("binary search key : " + key + " index : "+index);
배열을 리스트로 변환시킨다. 변환시에는 자료형이 중요하다. 자료형이 맞지 않으면 변환이 안된다.
// ----- 리스트 변환 String -----
printTitle("리스트 변환 - String");
String[] array = {"A", "B", "C", "D"};
System.out.println("Array : " +Arrays.toString(array));
ArrayList<String> list1 = new ArrayList<String>(Arrays.asList(array));
System.out.println("ArrayList : " + list1);
// ----- 리스트 변환 Integer -----
printTitle("리스트 변환 - Integer");
Integer[] array7 = {1,3,5,7,9};
ArrayList<Integer> list2 = new ArrayList<Integer>(Arrays.asList(array7));
for (int i: list2) {
System.out.print(i + " ");
}
System.out.println();
printTitle("배열로 다시 변환 - Integer");
Integer[] array8 = list2.toArray(new Integer[list2.size()]);
for (int i: array8) {
System.out.print(i + " ");
}
*배열 -> 리스트
배열은 Arrays 클래스의 메서드로 변환
*리스트 -> 배열
리스트는 toArray 라는 메서드로 변환
잘 구현된 자료형을 가져다 쓰기만 하면 되니까 어렵지 않은 내용이다.