arrays 클래스

arrays 클래스

복제

package com.javaex.api.array; import java.util.Arrays; public class ArrayEx { public static void main(String[] args) { arrayCopyEx(); } private static void arrayCopyEx() { int arr[] = new int[] {1,2,3,4,5}; // System 이용 복사 int[] target = new int[arr.length]; System.arraycopy(arr, // 원본배열 0, // 시작인덱스 target, // 대상 배열 0, // 시작 인덱스 arr.length // 복사할 길이 ); System.out.println("원본 배열 : " + Arrays.toString(arr)); System.out.println("System 복제 : "+ Arrays.toString(target)); // arrays의 복제 메서드 target = Arrays.copyOf(arr, arr.length); // 원본 배열, 복사할 배열 길이 System.out.println("CopyOf : "+ Arrays.toString(target)); // 배열 일부 복제 target = Arrays.copyOfRange(arr, 1, 3); // 원본 배열, 복사 시작 인덱스, 복사할 끝 인덱스 System.out.println("CopyOfRange : " + Arrays.toString(target)); } }

Arrays.arraycopy ( 원본 배열, 시작인덱스, 대상 배열, 대상 배열의 시작 인덱스, 복사할 길이)

Arrays.copyOf( 원본 배열, 복사할 배열 길이)

Arrays.copyOfRange( 원본 배열, 복사 시작 인덱스, 복사할 끝 인덱스)

정렬

1.

//역순 정렬 private static void basicSortDesEx() { Integer[] scores = {80,50,70,90,75,88,77}; System.out.println("원본 : "+ Arrays.toString(scores)); Arrays.sort(scores, Collections.reverseOrder()); // 배열이 기본 타입이아닌, 랩컨버런스?로 해줘야함 int -> Integer System.out.println("역순 정렬 : "+ Arrays.toString(scores)); } private static void basicSortEx() { int[] scores = {80,50,70,90,75,88,77}; System.out.println("원본 : "+ Arrays.toString(scores)); Arrays.sort(scores); System.out.println("Sort정렬 : "+ Arrays.toString(scores)); }

2.

private static void customClassSort() { Member[] members = { new Member("홍길동"), new Member("고길동"), new Member("장길산"), new Member("임꺽정") }; System.out.println("원본 : "+ Arrays.toString(members)); Arrays.sort(members); // 런타임 에러 -> cannot be cast to class java.lang.Comparable System.out.println("정렬 : "+ Arrays.toString(members)); Arrays.sort(members, Collections.reverseOrder());; System.out.println("역순 정렬 : "+ Arrays.toString(members)); }

package com.javaex.api.array; public class Member implements Comparable { String name; public Member(String name) { this.name = name; } @Override public String toString() { return "Member [name=" + name + "]"; } // ComparTo를 오버라이딩 해줘야한다. @Override public int compareTo(Object o) { // 0 : 두 객체의 순번이 같다. // 음수 : 순서가 앞이다. // 양수 : 순서가 뒤다. if(o instanceof Member) { Member other = (Member)o; return name.compareTo(other.name); } return 0; } }

검색

이진 검색

미리 정렬이 되어 있어야 한다. private static void bsicSearch() { int [] scores = {80,50,70,90,75,88,77}; // 이진 검색 방식은 미리 정렬이 되어 있어야 한다. Arrays.sort(scores); System.out.println("원본 : " + Arrays.toString(scores)); int index = Arrays.binarySearch(scores,75); // 75가 몇 번째 인덱스? System.out.println("75가 있는 인덱스 : "+ index); }​

from http://v-ridescent.tistory.com/121 by ccl(A) rewrite - 2021-12-08 10:01:43