[Java] Arrays

·2024년 1월 5일
0

Java

목록 보기
3/7
post-thumbnail

Arrays

배열을 다루는 데 유용한 메서드가 정의되어 있는 클래스
import java.util.Arrays;를 추가해주어야 한다.

toString() - 배열 출력

System.out.prinln(array)

바로 출력하면 타입@주소 형식으로 출력된다.
*char 배열은 각 요소가 구분자 없이 그대로 출력된다

Arrays.toString(array);

: 배열의 모든 요소를 '[array[0], array[1], ..]' 형식의 문자열로 만들어서 반환한다.
일차원 배열에만 사용할 수 있다.

Arrays.deepToString(array);

: 배열의 모든 요소를 재귀적으로 접근해서 문자열 구성.
다차원 배열에 사용한다.

예)

int[] arr1D = {0,1,2,3,4,5};
int[][] arr2D = {{11,12},{13,14}};
char[] chArr = {'A', 'A', 'C', 'B'};

System.out.println(arr1D);
// 출력 : [I@14191bb 와 같은 문자열 
System.out.println(Arrays.toString(arr1D));
// 출력 : [0, 1, 2, 3, 4, 5]

System.out.println(Arrays.deepToString(arr2D));
// 출력 : [[11, 12], [13, 14]]

System.out.println(chArr);
// 출력 : AACB

equals() - 배열 비교

Arrays.equals(array1, array2);

: 두 배열에 저장된 모든 요소가 일치하면 true, 하나라도 다르면 false 반환한다.
일차원 배열에만 사용할 수 있다.

Arrays.deepEquals(array1, array2);

다차원 배열의 비교에 사용한다.

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

sort(), binarySearch() - 배열 정렬과 검색

Aarrays.sort(array)

: 배열을 정렬

Aarrays.binarySearch(array, key)

: 배열에서 지정된 값 a가 저장된 위치(index)를 찾아서 반환

반드시 배열이 정렬된 상태에서 이용해야 올바른 결과를 얻는다.
순차 검색이 아닌, 이진 검색 : 검색 속도가 빨라 큰 배열의 검색에 유리
검색 값과 일치하는 요소가 여러 개 있다면, 어떤 것이 반환된 것인지는 알 수 없다.

int[] arr = {100,3,40,26};
Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
// 출력 : [3, 26, 40, 100]

int idx = Arrays.binarySearch(arr,26);
// idx = 1

copyOf() - 배열 복사

Arrays.copyOf(originalArray, int newLength)

: 배열 전체를 복사해서 새로운 배열을 만들어 반환한다.

Arrays.copyOfRange(originalArray, int from , int to)

: 배열 일부를 복사해서 새로운 배열을 만들어 반환한다.
*지정된 범위의 끝은 포함되지 않는다.

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]

fill(), setAll() - 배열 채우기

Arrays.fill(array, value)

: 배열의 모든 요소를 지정된 value 값으로 변경

Arrays.setAll(array, generator)

: generator 통해 생성된 값으로 변경
*generator : 함수형 인터페이스, 람다식 지정

int[] arr = new int[5]; // arr = [0,0,0,0,0]
Arrays.fill(arr, 5); // arr = [5,5,5,5,5]
Arrays.setAll(arr, i -> 3); // arr = [3,3,3,3,3]
Arrays.setAll(arr, i -> 3*i); // arr = [0,3,6,9,12]

asList() - 배열 변환

Arrays.asList()

: 배열을 List에 담아서 반환

반환한 List의 크기를 변경할 수 없다!!
추가, 삭제는 불가하며 값 변경은 가능하다

List list = Arrays.asList(new Integer[]{1,2,3,4,5});
List list = Arrays.asList(1,2,3,4,5); //매개변수 타입이 가변인수라 배열 생성 없이 요소들만 나열하는 것도 가능하다
list.add(6) // 예외 발생 (UnsupportedOperationException)

크기 변경할 수 있는 List가 필요하다면?
ArrayList 사용

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

profile
hyunnni

0개의 댓글

관련 채용 정보