Arrays 클래스에서 제공하는 메서드

2024. 12. 25. 20:42·Language/Java
목차
  1. Arrays 클래스에서는 어떤 메서드를 제공할까?
  2. Arrays 클래스
  3. 배열 비교 및 출력   -   equals(), toString()
  4. 다차원 배열의 비교 및 출력   -   deepEquals(), deepToString()
  5. 배열 복사   -   copyOf(), copyOfRange()
  6. 배열 채우기   -   fill(), setAll()
  7. 배열 -> List 변환   -   asList(Object... a)
  8. 배열 정렬 및 검색   -   sort, binarySearch()

 

 

 


 

Arrays 클래스에서는 어떤 메서드를 제공할까?

 

 


 

 

 

 

Arrays 클래스

 

--

Arrays 클래스는

배열을 다루기 편리한 메서드들을 제공하고 모두 static으로 되어있다.

 

Arrays 클래스뿐만 아니라
Objects, Collections와 같이 마지막에 's'가 붙은 클래스들은
모두 편리한 static 메서드들을 제공하고 있다.

--

 

 

 

 

배열 비교 및 출력   -   equals(), toString()

 

--

  • equals()   :  두 배열의 요소가 동일한지 비교
  • toString()  :  배열의 내용을 문자열로 반환 (이때 각 요소를 ", "로 구분하며 처음과 마지막은 "[", "]"로 묶는다.)

 

int[] a = {1, 2, 3};
int[] b = {2, 3, 4};
int[] c = {1, 2, 3};

System.out.println(Arrays.equals(a, b));
// false
System.out.println(Arrays.equals(a, c));
// true
int[] arr = {3, 1, 5, 2, 7, 8};

System.out.println(Arrays.toString(arr));
// [3, 1, 5, 2, 7, 8]

--

 

 

 

 

다차원 배열의 비교 및 출력   -   deepEquals(), deepToString()

 

--

  • deepEquals()  :  다차원 배열의 요소가 동일한지 비교  (일반 배열 비교인 equals()의 다차원 버전)
  • deepToString()  :  다차원 배열을 문자열로 반환  (일반 배열을 문자열로 반환하는 toString()의 다차원 버전)

 

String[][] a = new String[][] {{"aaa", "bbb"}, {"AAA", "BBB"}};
String[][] b = new String[][] {{"aaa", "bbb"}, {"AAA", "BBB"}};

System.out.println(Arrays.deepEquals(a, b));
// true
int[][] arr2 = {{1, 2}, {9, 8}};

System.out.println(Arrays.deepToString(arr2));
// [[1, 2], [9, 8]]

--

 

 

 

 

배열 복사   -   copyOf(), copyOfRange()

 

--

  • copyOf()  :  배열의 처음부터 지정된 index 범위까지 복사
  • copyOfRange()  :  배열의 원하는 index 범위를 복사
범위의 마지막(끝)을 의미하는 index는 포함하지 않는다.
ex) 3 ~ 9 index 범위만큼 복사  => 실제로 인덱스 3부터 8까지만 복사된다.  (3, 4, 5, 6, 7, 8)

 

int[] arr = {0, 1, 2, 3, 4, 5}

int[] a = Arrays.copyOf(arr, 4);
// [0, 1, 2, 3]
int[] b = Arryas.copyOf(arr, arr.length);
// [0, 1, 2, 3, 4, 5]
int[] c = Arrays.copyOf(arr, 10);
// [0, 1, 2, 3, 4, 5, 0, 0, 0, 0]

int[] A = Arrays.copyOfRange(arr, 2, 4);
// [2, 3]
int[] B = Arrays.copyOfRange(arr, 5, 9);
// [5, 0, 0, 0]
만약 배열 크기보다 큰 범위를 지정하면 0으로 채워 복사한다.

--

 

 

 

 

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

 

--

  • fill()  :  지정한 값으로 배열 요소를 모두 채움
  • setAll()  :  람다식을 사용하여 배열 요소를 채움

 

int[] arr = new int[5];

Arrays.fill(arr, 5);
// [5, 5, 5, 5, 5]
int[] arr = new int[5];

Arrays.setAll(arr, () -> (int)(Math.random() * 5) + 1);
// 1~5 랜덤 값을 순자척으로 배열에 할당
// [2, 1, 4, 4, 5]

--

 

 

 

 

배열 -> List 변환   -   asList(Object... a)

 

--

  • asList(Object... a)  :  배열을 List(컬렉션)으로 변환하여 반환
다만 이렇게 변환하여 반환한 List는 "읽기 전용"이다.
즉, 값을 가져와 사용만 가능하고 추가, 수정 등은 불가능하다.

 

// 배열 생성과 동시에 넣을 수도 있음
List list = Arrays.asList(new Integer[] {1, 2, 3, 4, 5});
// list = [1, 2, 3, 4, 5]

// 값만 넣어도 이를 배열로 인식하고 사용 가능
List list = Arrays.asList(1, 2, 3, 4, 5};
// list = [1, 2, 3, 4, 5]

list.add(6);
//예외발생!!   값 변경 불가능 / 읽기만 가능

 

 

만약 진짜 List컬렉션으로 만들어서 사용하고 싶다면

ArraysList 또는 LinkedList를 새로 만들어서 할당하여 사용하면 된다.

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

list.add(6);  // 정상작동

--

 

 

 

 

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

 

--

  • sort()  :  배열의 요소(내용)를 정렬
  • binarySearch()  :  배열의 요소(내용)를 검색
binarySearch()는 정렬된 배열에서 사용해야 한다.

[이진 탐색 과정 예시]
1 ~ 10 값을 가진 배열에서 7값을 찾는 과정


1. 첫 번째 탐색
배열 범위 low = 0, high = 9로
중간 인텍스 계산  =  (low + high) / 2  =  4
즉 배열의 중간 값은 arr[4] = 5
찾은 중간값과 목표값인 7을 비교하여 목푯값이 더 큰지 작은지 판단
- 중앙값(5)이 목표값(7)보다 작음  =  중앙값(5)을 기준으로 우측으로 탐색 범위로 좁힘


2. 두 번째 탐색
배열 범위 low = 5, high = 9로
중간 인텍스 계산  =  (low + high) / 2  =  7
즉 배열의 중간 값은 arr[7] = 8
찾은 중간값과 목표값인 7을 비교하여 목푯값이 더 큰지 작은지 판단
- 중앙값(8)이 목표값(7)보다 큼  =  중앙값(8)을 기준으로 좌측으로 탐색 범위로 좁힘


3. 세 번째 탐색
배열 범위 low = 5, high = 6로
중간 인텍스 계산  =  (low + high) / 2  =  5
즉 배열의 중간 값은 arr[5] = 6
찾은 중간값과 목표값인 7을 비교하여 목푯값이 더 큰지 작은지 판단
- 중앙값(6)이 목표값(7)보다 작음  =  중앙값(6)을 기준으로 우측으로 탐색 범위로 좁힘


4. 네 번째 탐색
배열 범위 low = 6, high = 6로
중간 인텍스 계산  =  (low + high) / 2  =  6
즉 배열의 중간 값은 arr[5] = 7
찾은 중간값과 목표값인 7을 비교하여 목푯값이 더 큰지 작은지 판단
- 중앙값(7)이 목표값(7)과 동일  =  즉시 탐색 종료

위와 같은 방식으로 탐색하기 때문에
요소의 값들이 정렬되어 있어야 한다.
int[] arr = {3, 2, 0, 1, 4};
int idx = Arrays.binarySearch(arr, 2);  
// idx = -5  잘못된 결과가 나옴


Arrays.sort(arr);
System.out.println(Arrays.toString(arr));
// [0, 1, 2, 3, 4]
int idx = Arrays.binarySearch(arr, 2);
// idx = 2  올바른 결과가 나옴

--

 

 

 

 

 

저작자표시 비영리 변경금지 (새창열림)

'Language > Java' 카테고리의 다른 글

스레드 (Thread)  (0) 2024.12.29
제네릭 (Generics)  (0) 2024.12.28
Iterator & ListIterator  (0) 2024.12.21
[Java] Stack과 Queue 사용하기  (1) 2024.12.20
Vector, ArrayList, LinkedList  (0) 2024.12.18
  1. Arrays 클래스에서는 어떤 메서드를 제공할까?
  2. Arrays 클래스
  3. 배열 비교 및 출력   -   equals(), toString()
  4. 다차원 배열의 비교 및 출력   -   deepEquals(), deepToString()
  5. 배열 복사   -   copyOf(), copyOfRange()
  6. 배열 채우기   -   fill(), setAll()
  7. 배열 -> List 변환   -   asList(Object... a)
  8. 배열 정렬 및 검색   -   sort, binarySearch()
'Language/Java' 카테고리의 다른 글
  • 스레드 (Thread)
  • 제네릭 (Generics)
  • Iterator & ListIterator
  • [Java] Stack과 Queue 사용하기
아-니지
아-니지
아-니지
성장 기록.zip
아-니지
  • 분류 전체보기 (266)
    • Language (76)
      • Java (39)
      • Kotlin (0)
      • HTML (10)
      • CSS (17)
      • Java Script (10)
    • JPA (11)
    • Spring Boot (27)
    • QueryDSL (2)
    • SQL [DB] (8)
    • Docker (29)
    • AWS (19)
    • Git & GitHub (17)
    • DevOps (1)
    • Terminology (14)
    • CS (50)
      • 컴퓨터 구조 (12)
      • 운영체제 (11)
      • 자료구조 (11)
      • 알고리즘 (0)
      • 네트워크 (16)
    • Record (7)
      • 알고리즘 풀이 (4)
      • 자바 메서드 (3)
    • Self Q&A (5)
hELLO· Designed By정상우.v4.5.3
아-니지
Arrays 클래스에서 제공하는 메서드

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.