Arrays 클래스는 배열 조작 기능을 가지고 있다.
배열 조작이란 배열의 복사, 항목 정렬, 항목 검색 과 같은 기능을 말한다
단순한 배열 복사는 System.arraycopy() 메소드를 사용할수 있으나
Arrays 는 추가적으로 항목 정렬, 항목 검색, 항목 비교와 같은 기능을 제공해준다
Arrays 클래스는 모든 메소드는 정척(Static)이므로 Arrays 클래스로 바로 사용이 가능
리턴 타입 | 메소드 이름 | 설명 |
int | binarySearch(배열, 찾는값) | 전체 배열 항목에서 찾는 값이 있는 인덱스 리턴 |
타겟 배열 | copyOf(원본배열, 복사할 길이) | 원본 배열의 0번 인덱스에서 복사할 길이만큼 복사할 배열 리턴, 복사할 길이는 원본 배열의 길이보다 커도 되며, 타겟 배열의 길이가 된다. |
타겟 배열 | copyOfRange(원본배열, 시작인덱스, 끝인덱스) | 웡본 배열의 시작 인덱스에서 끝 인덱스 까지 복사한 배열 리턴 |
boolean | deepEquals(배열, 배열) | 두 배열의 깊은 비교(중첩 배열의 항목까지 비교) |
boolean | eqauls(배열, 배열) | 두 배열의 얕은 비교(중첩 배열의 항목은 비교하지 않음) |
void | fill(배열 , 값) | 전체 배열 항목에 동일한 값을 저장 |
void | fill(배열, 시작인덱스, 끝인덱스, 값 ) | 시작 인덱스부터 끝 인덱스가지의 항목에만 동일한 값을 저장 |
void | sort(배열) | 배열의 전체 항목을 오름차운으로 정렬 |
String | toString(배열) | "[값1, 값, ..]"와 같은 문자열을 리턴 |
배열 복사
배열 복사를 위해 사용할수 있는 메소드
copyOf(원본배열, 복사할 길이). copyOfRange(원본배열, 시작인덱스, 끝 인덱스) 이다.
copyOf()메소드
- 원본 배열의 0번 인덱스에서 복사할 길이만큼 복사한 타겟 배열을 리턴 ,
- 복사할 배열은 원복 배열의 길이 보다 커도 되며, 타겟 배열의 길이가 된다
copyOfRange(원본배열, 시작인덱스, 끝인덱스)
- 원본 배열에서 시작인덱스에서 끝 인덱쓰 까지 복사한 배열을 리턴
- 시작인덱스는 포함, 끝 인덱스는 포함되지 않는.
단순히 배열을 복사할 목적이라면 Arrays 클래스를 사용하지 않고
System.arraycopy() 메소드를 이용
5개의 매개값 필요
System.arraycopy(Object src, int srcPos, Object dest, ind despos, int length)
-원본배열, 원복시작인덱스, 타겟배열, 타겟 시작 인덱스, 복사 갯수
원본 시작 인덱스는 원본 배열에서 복사할 항목의 시작 위치이고
타겟 시작 인덱스는 타겟 배열에서의 복사 시작 위치를 말한다
복사 개수는 원복 시작 인덱스에서부터 몇개의 항목을 복사할 것인지 말한다
public class ArrayCopyExample{
public static void main(String[] args){
char[] arr1 = {'j','a','v','a'}
//방법 1
char[] arr2 = Arrays.copyOf(arr1, arr1.length)
System.out.println(Arrays.toString(arr2));
//방법 2
char[] arr3 = Arrays.copyOfRange(arr1, 1, 3);
System.out.println(Arrrays.toString(arr3));
//방법3
char[] arr4 = new char[arr1.length];
System.arraycopy(arr1, 0, arr4, 0 ,arr1.length)
for(int i =0; i <arr4.length; i++){
System.out.println("arr4[" + i + "]=" + arr4[i])
}
}
}
배열 항목 비교
Arrays, equals()와 deepEquals()는 배열 항목을 비교 ,
equals()는 1차 항목의 값만 비교
deepEquals() 는 1차 항목이 서로 다른 배열을 참조할 경우 중첩된 배열의 항목까지 비교
배열 항목 정렬
기본 타입 String 배열은 Array.sort() 메소드의 매개값으로 지정 해주면 자동으로 오름차순 정렬
사용자 정의 클래스 타입 경우에는 Comparable 인테페이스를 구현하고 있어야함
public class Member implements Comparable<Member>{
String name;
Member(String name){
this.name = name;
}
@Override
public int compareTo(Member o){
return name.compareTo(o.name);
}
}
Comparable<Member>는 Member 타입만 비교하기 위해 제네렉<>을 사용
compareTo() 메소드는 비교값을 리턴하도록 오버라이딩
배열 항목 검색
배열 항목에서 특정 값이 위치한 인덱스를 얻는 것을 배열 검색
배열 항목을 검색하려면 먼저 Arrays.sort() 메소드로 항목들을 오름차순으로 정렬,
Arrays.binarySearch() 메소드로 찾아야함
int 인덱스값 = Arrray.binarySearch(배열, 찾는 항목);
'Back-end > 이것이 자바다[신용권 한빛미디어]' 카테고리의 다른 글
Math, Random 클래스 (0) | 2021.10.24 |
---|---|
Wrapper(포장) 클래스 (0) | 2021.10.24 |
정규 표현식과 Pattern 클래스 (0) | 2021.10.24 |
StringBuffer, StringBuilder 클래스 (0) | 2021.10.24 |
StringTokenizer 클래스 (0) | 2021.10.24 |