Arrays

0

Collection

목록 보기
6/11

Arrays Class - 배열을 다루기 편리한 메서드(static) 제공

  1. 배열의 출력 - toString()

  2. 배열의 복사 - 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]
  1. 배열 채우기 - 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,5,2,1,1]
  1. 배열의 정렬과 검색 - sort(), binarySearch()

binarySearch() 이진탐색은 정렬된 배열에만 가능!
결과 값으로 index를 반환

int[] arr = { 3, 2, 0, 1, 4};
int idx = Arrays.binarySearch(arr, 2);  // idx = -5 잘못된 결과

Arrays.sor(arr);  // 배열 arr을 정렬한다.
System.out.println(Arrays.toString(arr));  // [0, 1, 2, 3, 4]
int idx = Arrays.binarySearch(arr, 2);  // idx = 2 올바른 결과

순차 검색(탐색) 과 이진 검색(탐색)

순차 탐색 : 순서대로 하나씩 찾는 법(뒤는 앞이든)
이진 검색 : 반으로 잘라 비교 후 남은 곳을 계속 비교하며 검색함

  1. 다차원 배열의 출력 - deepToString()
  • 2차원 배열 이상 다차원에서 사용
int[] arr = {0,1,2,3,4};
int[][] arr2D = {{11,12}, {21,22}};

System.out.println(Arrays.toString(arr));  
System.out.println(Arrays.deepToString(arr2D));  
  1. 다차원 배열의 비교 - deepEquals()
String[][] str2D = new String[][]{{"aaa", "bbb"}, {"AAA", "BBB"}};
String[][] str2D2 = new String[][]{{"aaa", "bbb"}, {"AAA", "BBB"}};

System.out.println(Arrays.equals(str2D, str2D2));   // false, 비교가 불가, 1차원 배열에만 사용
System.out.println(Arrays.deepEquals(str2D, str2D2)); // true
  1. 배열을 List로 변환 - asList(Object... a) // 배열을 대입, 가변 매개변수, 여러개 대입 가능
List list = Arrays.asList(new Integer[]{1,2,3,4,5}); // list = [1, 2, 3, 4, 5]
List list = Arrays.asList(1,2,3,4,5); // list = [1, 2, 3, 4, 5]
list.add(6); // UnsupportedOperationException 예외 발생, List가 읽기 전용이기 때문
 
List list = new ArrayList(Arrays.asList(1,2,3,4,5));  // 새로운 ArraysList 생성

0개의 댓글