JAVA

[Java] Collections Framework - Arrays

SangRok Jung 2022. 7. 24. 11:59
반응형

Arrays Class


배열을 조작하는데 필요한 기능들을 제공하는 Class

배열의 복사, 비교, 정렬, 탐색 등의 기능을 제공.

 

 

 

 

Arrays Class의 주요 기능


copyof : 배열의 복사

equals : 배열의 비교

sort : 배열의 정렬

binarySearch : 배열의 탐색

 

 

 

*sort와 serch는 set이다.

 

▶ 주요 메서드

메서드 설명
static String toString(boolean[] a)
static String toString(byte[] a)
static String toString(char[] a)
static String toString(short[] a)
static String toString(int[] a)
static String toString(long[] a)
static String toString(float[] a)
static String toString(double[] a)
static String toString(Object[] a) 

배열의 출력
copyOf(), copyOfRange()


int[] arr = {0, 1, 2, 3, 4};
int[] arr2 = Arrays.copyOf(arr, arr.length); //arr2 = [0, 1, 2, 3, 4]
int[] arr3 = Arrays.copyOf(arr, 3); //arr3 = [0, 1, 2]
int[] arr4 = Arrays.copyOf(arr, 7); //arr4 = [0, 1, 2, 3, 4, 0, 0]
int[] arr5 = Arrays.copyOfRange(arr, 2, 4); //arr5 = [2, 3] <= 4는 불포함
int[] arr6 = Arrays.copyOfRange(arr, 0, 7); //arr6 = [0, 1, 2, 3, 4, 0, 0]
배열의 복사
새로운 배열을 생성해서 반환한다.
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이상 6이하의 난수]
배열 채우기
sort(), birnarySearch()


int[] arr = {3, 2, 0, 1, 4};
Arrays.sort(arr); // binarySearch를 하기 위해서는 정렬을 해야한다. (이진 검색)
int idx = Arrays.binarySearch(arr, 2);
배열의 정렬과 검색
deepToString()


int[][] arr2D = {{11, 22}, {21, 22}}; // [[11, 12], [21, 22]]
다차원 배열의 출력
deepEquals()


String[][] str2D = new String[][] {{"aaa", "bbb"}, {"AAA", "BBB"}};
String[][] str2D2 = new String[][]{{"aaa", "bbb"}, {"AAA", "BBB"}};
Arrays.deepEquals(str2D, str2D2); // true
다차원 배열의 비교
asList(Object... a) // 가변 매개변수 (가변 : 개수가 정해져 있지 않음.)


List list = Arrays.asList(new Integer[] {1, 2, 3, 4, 5});
List list = Arrays.asList(1, 2, 3, 4, 5);
list.add(6); // UnsupportedOperrationException 예외 발생 (읽기 전용임)

List list = new ArrayList(Arrays.asList(1, 2, 3, 4, 5));
배열을 List로 반환

 

 

 

 

 

 

 

▶ 구현

public class arr {
    public static void main(String[] args) {
        double[] arOrg = {1.1, 1.2, 1.3, 1.4, 1.5};

        // arOrg와 동일한 배열을 만든다.
        double[] arCpy = Arrays.copyOf(arOrg, arOrg.length);



        // arOrg의 일부분을 배열로 만든다. (index '1'부터 '3'전 까지)
        double[] arPart = Arrays.copyOfRange(arOrg, 1, 3);

        arCpy[0] = 0;
        for(double dd : arCpy) {
            System.out.println(dd);
        }
        System.out.println("--------------------------------------");



        // 이미 할당된 배열이 있고 값만 카피한다.
        double[] arr = new double[3];
        System.arraycopy(arOrg, 1, arr, 0, 3);

        for (double d : arr){
            System.out.println(d);
        }



        // 배열의 비교
        if (true == Arrays.equals(arOrg, arCpy)){
            System.out.println("true");
        }



        // 배열의 정렬
        int[] ar1 = {42, 4, 24, 7, 1, 0};

        Arrays.sort(ar1);

        for (int a : ar1){
            System.out.println(a);
        }



        // 특정 Object의 배열을 정렬.
        // Coparealbe Interface를 구현 => compareTo()함수를 구현
        person[] arPerson = new person[4];

        arPerson[0] = new person("aaa", 10);
        arPerson[1] = new person("bbb", 320);
        arPerson[2] = new person("ccc", 42);
        arPerson[3] = new person("ddd", 22);

        Arrays.sort(arPerson);

        for(person p : arPerson){
            System.out.println(p);
        }


        // 특정 위치의 인덱스를 찾는다.
        int idx = Arrays.binarySearch(arPerson, new person("aaa", 10));
        System.out.println(idx);
    }
}
    public static void main(String[] args) {
        // 배열의 출력
        // static String toString(boolean[] a)
        // static String toString(byte[] a)
        // static String toString(char[] a)
        // static String toString(short[] a)
        // static String toString(int[] a)
        // static String toString(long[] a)
        // static String toString(float[] a)
        // static String toString(double[] a)
        // static String toString(Object[] a) 

        // 배열의 복사
        // copyOf(), copyOfRange()
        int[] arr = {0, 1, 2, 3, 4};
        int[] arr2 = Arrays.copyOf(arr, arr.length);            //arr2 = [0, 1, 2, 3, 4]
        int[] arr3 = Arrays.copyOf(arr, 3);          //arr3 = [0, 1, 2]
        int[] arr4 = Arrays.copyOf(arr, 7);          //arr4 = [0, 1, 2, 3, 4, 0, 0]
        int[] arr5 = Arrays.copyOfRange(arr, 2, 4);   //arr5 = [2, 3] <= 4는 불포함
        int[] arr6 = Arrays.copyOfRange(arr, 0, 7);   //arr6 = [0, 1, 2, 3, 4, 0, 0]


        // 배열 채우기
        // fill(), setAll()
        int[] arr7 = new int[5];
        Arrays.fill(arr7, 9); // arr = [9, 9, 9, 9, 9]
        Arrays.setAll(arr7, (i) -> (int)(Math.random() * 5) + 1); // arr = [1이상 6이하의 난수]


        // 배열의 정렬과 검색
        // sort(), birnarySearch()
        int[] arr8 = {3, 2, 0, 1, 4};
        Arrays.sort(arr8); // binarySearch를 하기 위해서는 정렬을 해야한다. (이진 검색)
        int idx = Arrays.binarySearch(arr8, 2);


        // 다차원 배열의 출력
        // deepToString()
        int[][] arr2D = {{11, 22}, {21, 22}}; // [[11, 12], [21, 22]]



        // 다차원 배열의 비교
        // deepEquals()
        String[][] str2D = new String[][] {{"aaa", "bbb"}, {"AAA", "BBB"}};
        String[][] str2D2 = new String[][]{{"aaa", "bbb"}, {"AAA", "BBB"}};
        Arrays.deepEquals(str2D, str2D2); // true


        // 배열을 list로 반환
        // asList(Object... a) 가변 매개변수 (가변 : 개수가 정해져 있지 않음.)
        List list1 = Arrays.asList(new Integer[] {1, 2, 3, 4, 5});
        List list2 = Arrays.asList(1, 2, 3, 4, 5);
        //list.add(6); // UnsupportedOperrationException 예외 발생 (List는 읽기 전용임)

        List list3 = new ArrayList(Arrays.asList(1, 2, 3, 4, 5));

    }
 
반응형

'JAVA' 카테고리의 다른 글

[Java] Collections Framework - Map  (0) 2022.07.26
[Java] Collections Framework - Set  (0) 2022.07.26
[Java] Collections Framework - Stack & Queue  (0) 2022.07.21
[Java] Collections Framework - List Interface  (0) 2022.07.21
[Java] Collections Framework  (0) 2022.07.21