-
컬렉션 - Arrays 클래스와 메서드백엔드/자바 2021. 5. 20. 16:56
Arrays 클래스는 배열을 다루는데 유용한 메서드들이 정의되있다.
모든 메서드가 모든 Static으로 별도로 객체를 생성없이도 언제든 사용이 가능하다.
배열의 복사 - copyOf(), copyOfRange()
copyOf()는 배열 전체를 복사해서 새로운 배열을 만들어서 반환한다.
반면 copyOfRange()는 지정한 범위만큼 복사를 해서 새로운 배열을 반환한다.
이때 copyOfRange()에 지정된 범위의 끝은 포함하지 않는다.
public static void main(String[] args) { int arr [] = {0, 1, 2, 3, 4}; int arr1 [] = Arrays.copyOf(arr, arr.length); // {0, 1, 2, 3, 4} int arr2 [] = Arrays.copyOf(arr, 3); // {0, 1, 2} int arr3 [] = Arrays.copyOfRange(arr, 2,4); // {2, 3} - 4는 불포함 int arr4 [] = Arrays.copyOfRange(arr, 0,5); // {0, 1, 2, 3, 4} }
배열 채우기 - fill(), setAll()
fill()은 배열의 모든 요소를 지정된 값으로 채운다.
setAll()은 배열을 채우는데 사용할 함수형 인터페이스를 매개변수로 받는다.
setAll()을 쓰기 위해선 함수형 인터페이스를 구현한 객채를 매개변수로 지정하거나 람다식을 지정한다.
public static void main(String[] args) { int arr [] = new int [5]; Arrays.fill(arr, 5); // {5, 5, 5, 5, 5} Arrays.setAll(arr, (i) -> (int)(Math.random()*5)+1); // 특정 값을 이용해서 값을 채움 }
배열의 정렬과 검색 - sort(), binarySearch()
sort()는 배열을 정렬할 때 사용하면 된다.
binarySearch()는 이진탐색을 위한 메서드로 지정된 값의 인덱스를 반환한다.
이때 주의할 점은 binarySearch()가 제대로 동작하려면 sort()를 이용해서 정렬을 우선적으로 해야한다.
public static void main(String[] args) { int arr [] = {5,4,3,2,1}; Arrays.sort(arr); // {1, 2, 3, 4, 5}로 정렬 Arrays.binarySearch(arr, 3); // 인덱스 2 반환, 탐색 전 정렬 필요 }
배열의 비교와 출력 - equals(), toString()
배열을 비교할 때는 equals()를 사용한다.
만약 다차원 배열을 비교할 때는 deepEquals()를 쓰면 된다.
배열을 문자열로 편하게 출력하려면 toString()을 사용한다.
만약 다차원 배열을 문자로 출력하려면 deepToString()을 사용한다.
public static void main(String[] args) { int arr [] = {1,2,3,4,5}; int arr2 [] = {1,2,3,4,5}; int arr2d [][] = {{1,2,3},{4,5,6}}; int arr2d2 [][] = {{1,2,3},{4,5,6}}; Arrays.toString(arr); // 출력시 [1,2,3,4,5] Arrays.deepToString(arr2d); // 출력시 [[1,2,3], [4,5,6]] Arrays.equals(arr, arr2); // 출력시 true Arrays.deepEquals(arr2d, arr2d2); // 출력시 true }
배열을 List로 변환 - asList(Object....a)
asList()는 배열을 List에 담아서 반환하는 것이다.
이때 반환되는 리스트는 읽기 전용이라 자료를 추가, 삭제할 수 없다.
만약 리스트를 반환하면서 읽기전용이 아닌 온전한 리스트에 넣고 싶다면 생성자에 넣어주면 된다.
public static void main(String[] args) { int arr [] = {1,2,3,4,5}; // 배열을 리스트로 변환(읽기전용) List list = Arrays.asList(new int[] {1,2,3,4,5}); // 배열을 읽기 쓰기 가능한 리스트로 변환 List list2 = new ArrayList(Arrays.asList(1,2,3,4,5)); }
'백엔드 > 자바' 카테고리의 다른 글
지네릭스(Generics) - 지네릭 소개, 지네릭 클래스 (0) 2021.05.21 컬렉션 - Collections 클래스와 메서드 (0) 2021.05.20 컬렉션 - Comparable와 Comparator (0) 2020.08.17 컬렉션 - iterator, Listiterator, Enumeration (0) 2020.08.17 컬렉션 - MAP 출력 방법 (0) 2020.08.17