Arrays
클래스: 배열을 효율적으로 다루기 위한 다양한 정적 메서드를 제공하는 클래스이다.
int [] arr = new int[10]; // 초기값 0, 크기가 10인 배열 생성
int [] arr = {10,20,30}; // 초기갑으로 10,20,30을 가지는 크기가 3인 배열 생성
length 변수
로 접근int len = arr.length;
인덱스
로 배열 접근 및 수정 가능int value = arr[2]; // 30
arr[0] = 10;
Arrays.copyOf()
: 전체 배열 복사
int [] newArr = **Arrays.copyOf**(arr, newLength);
arraycopy()
: 부분 배열 복사
System.arraycopy(srcArray, srcPos, destArray, destPos, length);
- srcArray : 복사할 원본 배열
- srcPos : 복사를 시작할 인덱스
- destArray : 복사된 값을 저장할 배열
- destPos : 복사된 값을 저장할 시작 인덱스
- length : 복사할 원소의 개수
fill()
Arrays.fill(arr,10); // arr 배열 값을 모두 10으로
sort()
: 오름차순 정렬
Arrays.sort(); // 오름차순
내림차순 정렬
: 내림차순은 Comparator
을 이용해서 정렬 가능하다.
Integer[] arr = {5, 3, 8, 1, 2};
Arrays.sort(arr, Collections.reverseOrder()); // 오름차순
binarySearch()
: 이진탐색
: 정렬된 배열에서 특정 키를 찾기위해 이진탐색을 사용한다.
int index = Arrays.binarySearch(arr, key);
Arrays.equals()
: 두 배열의 각 원소를 순서대로 비교해서 동일하면 true 반환
boolean isEqual = Arrays.equals(arr1, arr2);
Arrays.compare(a,b)
: 두 배열을 사전순으로 비교해서 순서를 결정한다.두 배열의 크기가 다른 경우 작은 배열이 앞에 온 것으로 간주
int[] a = {0,20,30,40};
int[] b = {1,20,30,40};
int c = Arrays.compare(a,b);
System.out.println(c); // -1
위 코드에서 a가 b보다 사전순으로 앞인 배열임을 확인할 수 있다.
Arrays.mismatch()
: 두 개의 배열을 비교해서 처음으로 서로 다른 요소가 위치하는 인덱스를 반환
int[] a = {0,20,30,40};
int[] b = {0,20,30,41};
int c = Arrays.mismatch(a,b);
System.out.println(c); // 3
위 코드에서 a와 b 배열이 불일치 하는 인덱스는 3임을 확인할 수 있다.
Arrays.toString()
: 각 배열을 원소를 쉼표로 구분해서 […] 형태의 문자열로 반환
int[] arr = {10, 20, 30, 40};
String result = Arrays.toString(arr);
// [10, 20, 30]
asList()
: 배열을 고정된 크기의 리스트로 반환
String[] arr3 = {"apple", "banana", "cherry"};
List<String> list = Arrays.asList(arr3);
System.out.println(list);
// [apple, banana, cherry]
Arrays.spliterator()
: 배열을 Spliterator 객체로 변환해 병렬 스트림 처리가 가능하도록 만드는 역할
tryAdvance()
: 개별적으로 요소에 접근하는 메서드trySplit()
: 개별적으로 소비되지 않고 남아있는 요소들을 두 개로 분할forEachRemaining()
: 개별적으로 소비되지 않고 남아있는 요소를 대상으로 처리estimateSize()
: 아직 순회되지 않은 요소의 수String[] names = {"Alice", "Bob", "Charlie", "David","gdus"};
Spliterator<String> spliterator = Arrays.spliterator(names);
System.out.println(spliterator.estimateSize()); // 4
spliterator.tryAdvance((x) -> System.out.println(x)); // Alice
spliterator.tryAdvance((x) -> System.out.println(x)); // Bob
Spliterator<String> spliterator2 = spliterator.trySplit();
spliterator2.tryAdvance(System.out::println); // Charlie
System.out.println("남은 것");
spliterator.forEachRemaining(System.out::println); // David gdus
Arrays.stream()
: 배열을 Stream API를 사용해서 스트림으로 변환하는 메서드
String[] names = {"Alice", "Bob", "Charlie", "David", "gdus"};
Stream<String> s = Arrays.stream(names);
String[] a = s.map((name) -> (name +1))
.toArray((size) -> new String[size]);
for(int item : arr){
System.out.println(item);
}