본문으로 바로가기

Java- 컬렉션 프레임워크(Arrays)

category 프로그래밍 언어/Java 2019. 7. 19. 22:18

1. Arrays

Arrays는 클래스입니다. 즉 배열을 유용하게 다루기 위한 용도로 쓰입니다.

 

정의된 메소드들은 많이 있찌는 않고 모두 static입니다.

 

copyOf(), copyOfRange()

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}
int[] arr6 = Arrays.copyOfRange(arr, 0, 7); // arr6 = {0, 1, 2, 3, 4, 0, 0}
  • copyOf(복사할 배열, 복사할 길이)
  • copyOfRange(복사할 배열,시작 인덱스, 마지막 인덱스) 

마지막 인덱스에는 포함되지 않고 그 이전 까지 배열을 복사하게 됩니다.

즉 2,4이면 4인덱스 이전까지 (2~3) 까지 복사가 됩니다.


fill(), setAll()

fill()은 배열의 모든 요소를 지정된 값으로 채우게 됩니다. 

setAll()은 배열을 채우는데 인터페이스를 매개변수로 받아서 지정합니다.

 

int[] arr = new int[5];
Arrays.fill(arr, 9);  // arr = {9, 9, 9, 9, 9}
Arrays.setAll(arr, () -> (int) (Math.random() * 5 ) + 1); // arr = {1, 5, 2, 1, 1}

sort(), binarySearch()

sort()는 말 그대로 배열을 정렬할 때 사용합니다.

binarySearch()는 검색할 때 사용하게되는데 , 배열에 지정된 값의 위치를 찾아서 반환합니다. 이때 무조건 정렬이 되어있어야 합니다.

 

int[] arr = {3, 2, 0, 1, 4};
int index = Arrays.binarySearch(arr, 2); // index = -5 로 잘못된 결과가 나온다.

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

equals(),toString()

equals()는 문자열을 비교하는데 다차원은 안됩니다.

deepEquals()는 다차원 문자열을 비교합니다.

toString()은 배열을 출력합니다.

deepToString()은 다차원 배열을 출력합니다.

 

String[][] str2D = new String[][]{ {"aaa", "bbb"}, {"AAA", "BBB"} };
String[][] str2D2 = new String[][]{ {"aaa", "bbb"}, {"AAA", "BBB"} };

System.out.println(Arrays.equals(str2D, str2D2)); // false
System.out.println(Arrays.deepEquals(str2D, str2D2)); // true
false
true
int[] arr = {0, 1, 2, 3, 4};
int[][] arr2D = { {11, 12}, {21, 22} };

System.out.println(Arrays.toString(arr)); // [0, 1, 2, 3, 4]
System.out.println(Arrays.deepToString(arr2D)); // [[11, 12], [21, 22]]

asList(Object... a)

배열을 리스트로 전환합니다.

 

매개변수가 가변인자이기 때문에 배열을 나열하여도 가능합니다.

2019/07/04 - [프로그래밍 언어/Java] - Java- 가변인자

 

Java- 가변인자

1. 가변 인자 가변 인자는 매서드의 매개변수를 동적으로 사용할 수 있도록 jdk 1.5부터 만들어졌습니다. 매개변수의 가변인자를 사용하는 방법은 int a(타입 ... 변수) int b(String,타입...변수) 위와 같습니다..

dlwjdcks5343.tistory.com

List list = Arrays.asList(new Integer[]{1, 2, 3, 4, 5}); // list = [1, 2, 3, 4, 5]
List<Integer> list = Arrays.asList(1, 2, 3, 4, 5); // list = [1, 2, 3, 4, 5]
list.add(6); // UnsupportedOperationException 예외 발생

대신 크기는 변경이 불가하기 때문에 크기를 변경하고자 한다면 아래와 같이해야합니다.

List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));