배열에 사용할 수 있는 메서드들은 무엇이 있을까?
필요한 패키지
--
import java.util.Arrays;
--
배열 출력
--
1차 배열 출력
Arrays.toString(배열이름)
int[] arr = {1, 3, 5, 7, 9};
System.out.println(Arrays.toString(arr));
// [1, 3, 5, 7, 9]
다차원 배열 출력
Arrays.deepToString(배열이름)
int[][] arr = {{1, 3, 5, 7}, {0, 2, 4, 6}};
System.out.println(Arrays.deepToString(arr));
// [[1, 3, 5, 7], [0, 2, 4, 6]]
/*
만약 toString(arr)를 사용했다면?
[[I@3934vb32c3], [I@38v910v42]]
주솟값을 출력하게 된다.
*/
--
배열 크기(길이)
--
배열의 크기(길이)를 반환하기
배열이름.length()
int[] arr1 = {1, 2, 3, 4, 5};
System.out.println(arr1.length());
// 5
int[][] arr2 = {{1, 2, 3, 4}, {2, 5, 7, 9}};
System.out.println(arr2.length());
// 2
System.out.println(arr2[0].length());
// 4
--
배열 정렬
--
배열 오름차순 정렬
Arrays.sort(배열이름)
int[] arr = {3, 5, 2, 6, 1}
Arrays.sort(number);
System.out.println(Arrays.toString(arr));
// [1, 2, 3, 5, 6]
--
배열 비교
--
1차 배열 비교
(배열의 길이, 각 요소의 값이 같은지 비교 / 주솟값이 아닌 최종 내용물을 비교)
Arrays.equal(배열이름1, 배열이름2)
int[] arr1 = {1, 2, 3, 4};
int[] arr2 = {1, 2, 3, 4};
int[] arr3 = {2, 3, 4, 5};
System.out.println(Arrays.equals(arr1, arr2));
// true
System.out.println(Arrays.equals(arr2, arr3));
// false
다차원 배열 비교
Arrays.deepEquals(배열이름1, 배열이름2)
int[][] arr1 = {{1, 2, 3, 4}, {2, 2, 3, 4}};
int[][] arr2 = {{1, 2, 3, 4}, {2, 2, 3, 4}};
int[][] arr3 = {{2, 3, 4, 5}, {2, 2, 3, 4}};
System.out.println(Arrays.deepEquals(arr1, arr2));
// true
System.out.println(Arrays.deepEquals(arr2, arr3));
// false
--
배열 복사
--
기존 배열의 인덱스 0부터 원하는 길이(인덱스) -1까지 복사
Arrays.copyOf(배열이름, 인덱스)
int[] arr1 = {0, 1, 2, 3};
int[] arr2 = Arrays.copyOf(arr1, 2);
int[] arr3 = Arryas.copyOf(arr1, 6);
System.out.println(Arrays.toString(arr2));
// [0, 1]
System.out.println(Arrays.toString(arr3));
// [0, 1, 2, 3, 0, 0] 나머지는 기본값으로 채움
기존 배열의 원하는 인덱스부터 길이(인덱스) -1까지 복사
Arrays.copyOfRange(배열이름, 시작 인덱스, 끝 인덱스)
int[] arr1 = {0, 1, 2, 3, 4, 5, 6, 7};
int[] arr2 = Arrays.copyOf(arr1, 2, 5);
System.out.println(Arrays.toString(arr2));
// [2, 3, 4]
--
배열 채우기
--
배열의 모든 요소(값)를 특정 값으로 채움
Arrays.fill(배열이름, 값)
int[] arr = new int[5];
Arrays.fill(arr, 10);
System.out.println(Arrays.toString(arr));
// [10, 10, 10, 10, 10]
배열의 모든 요소(값)를 람다 또는 함수를 통해 각 요소를 채우기
Arrays.setAll(배열이름, 람다 or 함수)
int[] arr = new int[5];
Arrays.setAll(arr, i -> i * 2);
System.out.println(Arrays.toString(arr));
// [0, 2, 4, 6, 8]
--
배열 검색
--
이진 탐색(검색)을 이용하여 특정 요소의 위치(인덱스) 찾기
(이진 탐색을 이용하므로 정렬된 배열에서만 사용할 수 있다.)
Arrays.binarySearch(배열이름, 값)
int[] arr = {3, 5, 2, 1, 6};
Arrays.sort(arr);
// [1, 2, 3, 5, 6]
int index = binarySearch(arr, 3);
// index = 2
--
배열 -> 리스트 변환
--
배열을 ArrayList로 형변환하기
Arrays.asList(배열이름)
String[] arr = {"Apple", "Banana", "Cherry"};
List<String> list = Arrays.asList(arr);
System.out.println(list);
// ["Apple", "Banana", "Cherry"]
Arrays.asList()로 형변환을 한 경우
고정된 크기의 리스트를 반환하기 때문에
리스트의 크기 변경이 불가능하여 요소의 추가, 삭제는 불가능하다.
정확하게는
자바의 표준인 ArraysList 클래스로 변환하는 것이 아닌
자바의 내부 클래스인 Arrays$ArrayList로 변환하는 것으로
배열의 크기가 고정된 상태에서 List 인터페이스의 일부 메서드를 구현한 것이다.
만약 유동적으로 리스트의 크기 변경을 하고 싶다면 (가변 크기 리스트)
자바의 표준인 ArraysList 클래스로 다시 형변환해줘야 한다.
String[] arr = {"Apple", "Banana", "Cherry"};
List<String> list = new ArrayList<>(Arrays.asList(arr));
list.add("Orange"); // 새로운 요소 추가 가능
System.out.println(list);
// [Apple, Banana, Cherry, Orange]
번외 : 처음부터 가변 크기 리스트를 생성 후, 배열의 모든 요소를 리스트에 추가하기
Collections.addAll(리스트이름, 배열이름)
String[] arr = {"Apple", "Banana", "Cherry"};
List<String> list = new ArrayList<>();
Collections.addAll(list, arr);
System.out.println(list);
// [Apple, Banana, Cherry]
--
'Language > Java' 카테고리의 다른 글
생성자 (+ new, this, this() 키워드) (0) | 2024.10.13 |
---|---|
클래스, 객체, 인스턴스 (+ 객체 생성 방법) (2) | 2024.10.12 |
배열 (+ 다차원 배열) (0) | 2024.10.10 |
조건문, 반복문 (+ break, continue, label) (0) | 2024.10.06 |
[연산자] 비교, 논리, 그 외의 연산자 (+ instanceof) (0) | 2024.10.05 |