출처 - Java의 정석 기초편 (남궁 성)
1. Arrays클래스
- 배열을 다루는데 유용한 메서드(모두 static) 제공
- 매개변수 타입 오버로딩
2. 배열→문자열 출력
- to String(): 일차원 배열
- deepToString(): 다차원 배열
int[] arr = {0,1,2,3,4};
int[][] arr2D = {{11,12}, {21,22}};
System.out.println(Arrays.toString(arr)); // [0,1,2,3,4]
System.out.println(Arrays.deepToString(arr2D)); // [[11, 12], [21, 22]]
3. 배열 복사
- copyOf(): 배열 전체
- copyOfRange(): 배열 일부
int[] arr = {0,1,2,3,4};
int[] arr2 = Arrays.copyOf(arr, 3); // arr2=[0,1,2]
int[] arr3 = Arrays.copyOf(arr, 7); // arr3=[0,1,2,3,4,0,0]
int[] arr4 = Arrays.copyOfRange(arr, 2, 4); // arr4=[2,3]
4. 배열 채우기
- fill(): 값 지정
- setAll(): 람다식 지정
int[] arr = new int[5];
Arrays.fill(arr, 9); // arr=[9,9,9,9,9]
Arrays.setAll(arr, (i) -> (int)(Math.random()*5)+1); // arr=[1,5,2,1,1]
5.배열 정렬, 검색
- sort(): 정렬
- binarySearch(): 이진 검색→정렬 필요, 지정된 값이 저장된 위치(index) 반환
int[] arr = {3,2,0,1,4};
Arrays.sort(arr);
System.out.println(Arrays.tostring(arr)); // [0,1,2,3,4]
int idx = Arrays.binarysearch(arr, 2); // idx=2
6. 배열 비교
- equals(): 일차원 배열
- deepEquals(): 다차원 배열
String[][] str2D = new String[][]{{"aaa", "bbb"}, {"AAA", "BBB"}};
String[][] str2D2 = new String[][]{{"aaa", "bbb"}, {"AAA", "BBB"}};
System.out.println(Arrays.equals(2tr2D, str2D2)); // false (배열의 배열→주소 비교)
System.out.println(Arrays.deepEquals(2tr2D, str2D2)); // true
7. 배열→List 변환
- asList(Object...a): 가변 매개변수
- asList()가 반환한 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); // UnsupportedOperationException 예외 발생
List list = new ArrayList(Arrays.asList(1,2,3,4,5)); // 복사되어 생성되어 크기 변경 가능
8. parallelXXX(), spliterator(), stream()
- 람다와 스트림 관련
9. Comparable, Comparator
- 객체 정렬에 필요한 메서드 정의한 인터페이스
- 정렬이란? 두 대상 비교→자리 바꿈
- Comparable: 기본 정렬기준(default)
- Comparator: 기본 정렬기준 외 다른 기준으로 정렬
- compare(), compareTo(): 두 객체의 비교 결과를 반환하도록 작성(같으면 o, 왼쪽이 크면 양수, 오른쪽이 크면 음수)
public interface Comparator {
int compare(Object o1, Object o2); // o1과 o2비교
boolean equals(Object obj); // 오버라이딩이 필요할 수도 있다는 것 알리기 위해 정의한 것뿐
}
public interface Comparable {
int compareTo(Object o); // 객체 자신(this)과 o 비교
}
- Arrays.sort()
- String, Integer, Float는 자체적으로 Comparable 구현한 내부 정렬기준 있음
static void sort(Object[] a) // 객체 배열에 저자된 객체가 구현한 Comparable에 의한 정렬
static void sort(Object[] a, Comparator c) // 지정한 Comparator에 의한 정렬
String[] strArr = {"cat", "Dog", "lion", "tiger"};
Arrays.sort(strArr); // String의 Comparable 구현에 의한 정렬
Arrays.sort(strArr, String.CASE_INSENSITIVE_ORDER); // 대소문자 구분없이 정렬
'Java' 카테고리의 다른 글
HashMap, TreeMap, Collections (0) | 2022.10.30 |
---|---|
HashSet, TreeSet(binary search tree) (0) | 2022.10.29 |
Iterator (0) | 2022.10.28 |
스택(Stack), 큐(Queue) (0) | 2022.10.28 |
ArrayList, LinkedList (0) | 2022.10.27 |