Arrays 클래스

혜연·2025년 2월 25일
0

Java

목록 보기
2/6
post-thumbnail

Arrays 클래스

: 배열을 효율적으로 다루기 위한 다양한 정적 메서드를 제공하는 클래스이다.

  • java.util 패키지
  • 정적 메서드를 제공해 객체 생성없이 바로 사용 가능하다.
  • 배열의 복사, 정렬, 검색, 초기화, 비교 등의 메서드 제공

1. 배열 선언 및 배열 생성

  • 고정 크기의 배열 생성
int [] arr = new int[10];  // 초기값 0, 크기가 10인 배열 생성
  • 초기값을 가지는 배열 생성
int [] arr = {10,20,30};   // 초기갑으로 10,20,30을 가지는 크기가 3인 배열 생성

2. 배열 길이 및 접근

  • length 변수로 접근
int len = arr.length;
  • 인덱스로 배열 접근 및 수정 가능
int value = arr[2]; // 30
arr[0] = 10;

3. 배열 복사

Arrays.copyOf() : 전체 배열 복사

    int [] newArr = **Arrays.copyOf**(arr, newLength);
  • arr 배열을 전체 복사하고, newLength가 arr 보다 긴 경우에 남은 원소는 0으로 채운다.

arraycopy() : 부분 배열 복사

    System.arraycopy(srcArray, srcPos, destArray, destPos, length);
- srcArray  : 복사할 원본 배열
- srcPos     : 복사를 시작할 인덱스
- destArray  : 복사된 값을 저장할 배열
- destPos     : 복사된 값을 저장할 시작 인덱스
- length      : 복사할 원소의 개수

4. 배열 초기화 및 정렬

fill()

Arrays.fill(arr,10); // arr 배열 값을 모두 10으로

sort() : 오름차순 정렬

Arrays.sort(); // 오름차순

내림차순 정렬

: 내림차순은 Comparator 을 이용해서 정렬 가능하다.

  • 기본 타입 int는 Comparator를 직접 사용 불가능하다. Wrapper 클래스로 변경한 후에 Comparator를 적용할 수 있다.
Integer[] arr = {5, 3, 8, 1, 2};
Arrays.sort(arr, Collections.reverseOrder()); // 오름차순

binarySearch() : 이진탐색

: 정렬된 배열에서 특정 키를 찾기위해 이진탐색을 사용한다.

int index = Arrays.binarySearch(arr, key);
  • arr에 key가 저장된 인덱스를 반환한다.
    • 찾지 못한 경우 음수값이 반환된다.
  • 반드시 정렬된 배열에서만 사용할 수 있다.

5. 배열 비교 및 문자열 변환

Arrays.equals()

: 두 배열의 각 원소를 순서대로 비교해서 동일하면 true 반환

boolean isEqual = Arrays.equals(arr1, arr2);

Arrays.compare(a,b)
: 두 배열을 사전순으로 비교해서 순서를 결정한다.두 배열의 크기가 다른 경우 작은 배열이 앞에 온 것으로 간주

  • 반환값
    0 : 두 배열이 같다.
    음수 : a가 b보다 사전순으로 앞
    양수 : 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()
: 두 개의 배열을 비교해서 처음으로 서로 다른 요소가 위치하는 인덱스를 반환

  • 배열이 동일한 경우에는 -1을 반환
        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]

6. 배열을 List로 변환

asList()

: 배열을 고정된 크기의 리스트로 반환

String[] arr3 = {"apple", "banana", "cherry"};
List<String> list = Arrays.asList(arr3);
System.out.println(list);
// [apple, banana, cherry]

7. 배열을 Spliterator로 변환

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

8. 배열을 스트림으로 변환

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]);

9. 향상된 for문

for(int item : arr){
		System.out.println(item);
}
  • arr 배열의 요소들을 순서대로 순회할 수 있다. 순서대로 각 요소를 item(사용자 지정 변수)로 접근한다.

0개의 댓글

관련 채용 정보