본문 바로가기
JAVA

Java - Arrays 클래스

by winteringg 2022. 10. 29.

1. Arrays 클래스로 배열 다루기
1) 배열의 비교와 출력 메서드 < toString(), deepToString() & equals(), deepEquals() >
  - toString(), deepToString() 메서드 예시
  - toString() 은 1차원 배열에 쓰이고, deepToString() 은 2차원 혹은 다차원 배열에 쓰임.

int[]   arr1 = {0,1,2,3,4};
int[][] arr2 = {{11,12}, {21,22}};

System.out.println(Arrays.toString(arr1));
//출력 화면 => [0,1,2,3,4]
System.out.println(Arrays.deepToString(arr2));
//출력 화면 => [[11,12], [21,22]]

 
- equals(), deepEquals() 메서드 예시
  - equals() 는 1차원 배열용이지만 이 예시에서는 2차원 배열에 쓰였기 때문에 값을 비교하면 false 가 나오고, deepEquals() 는 2차원 혹은 다차원 배열에 쓰이기 때문에 값을 비교하면 true 가 나옴.

String[][] str1 = {{"aaa", "bbb"}, {"AAA", "BBB"}};
String[][] str2 = {{"aaa", "bbb"}, {"AAA", "BBB"}};

System.out.println(Arrays.equals(str1, str2));   //false 출력
System.out.println(Arrays.deepEquals(str1, str2));   //true 출력


2) 배열의 복사 메서드 < copyOf(), copyOfRange() >
  - 배열의 인덱스를 그대로 복사해 주는 메서드
  - 배열은 한번 생성하고 컴파일되면 그 길이를 바꿀 수 없음. 더 많은 저장공간들이 필요하다면, 보다 큰 배열을 새로 만들고 이전 배열로부터 항목값들을 복사해야 함.

copyOf(), copyOfRange() 메서드 예시

3) 배열의 정렬 메서드 < sort(),  >
  - 오름차순으로 배열을 정렬해줌.

int[] arr = {3, 2, 0, 1, 4};
Arrays.sort(arr);                          // 배열 arr을 오름차순으로 정렬
System.out.println(Arrays.toString(arr));  // 출력화면 -> [0, 1, 2, 3, 4]


4) 배열의 검색 메서드 - binarySearch()
  - 배열이 정렬 되어 있을 때에만 인덱스 검색 가능. 랜덤 숫자는 불가능.

int[] arr = {3,2,0,1,4};
int idx = Arrays.binarySearch(arr, 2);    //idx = -5 ←배열 정리를 해주지 않으면 잘못된 결과 출력됨.

//배열 정렬 후
Arrays.sort(arr);   //sort() 메서드로 배열 정렬
System.out.println(Arrays.toString(arr));   // [0,1,2,3,4]
int idx = Arrays.binarySearch(arr, 2);      // idx = 2 ← 올바른 결과 출력됨.

5) 배열 채우기 < fill(), setAll() >

int[] arr = new int[5];
Arrays.fill(arr, 9);    //총 5개의 배열을 9로 채움
                        //출력화면 : arr=[9,9,9,9,9]
Arrays.setAll(arr, (i) -> (int)(Math.random()*5)+1);  //랜덤값 출력화면 : arr=[1,5,2,1,1]


6) 배열을 List 로 변환 < asList() >

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);   //이 메서드는 읽기 전용으로 만들어지기 때문에 UnsupportedOperationException 예외 발생

//만약 추가하거나 변경하고 싶으면 ArrayList에 생성자에 넣어줘서 새로운 ArrayList 를 만들어야 함.
List list = new ArrayList(Arrays.asList(1,2,3,4,5));




 

 


참고 : [도우출판] JAVA의 정석(3ND EDITION)-자바의 정석 최신 Java 8.0 포함 Chapter 5.배열, 11.Arrays 클래스

'JAVA' 카테고리의 다른 글

Java - Stack 과 Queue  (0) 2022.11.05
JAVA - Stream (스트림)  (0) 2022.10.29
Java - 다형성, instanceof  (0) 2022.10.29
Java - 제네릭스 (Generics)  (0) 2022.10.29
예외 처리 (Exception)  (1) 2022.09.10

댓글