Array

Jemny·2023년 10월 18일
0

자료구조

목록 보기
3/6

배열 자료구조의 기본구조

배열은 같은 타입의 데이터를 연속된 공간에 나열시키고 각 데이터에 인덱스(index)를 부여해 놓은 자료구조이다.

ex) 1 2 3 4 5 구조의 배열이 있으면 메모리에 연속적인 주소를 가지고 저장이 된다.

  • 배열은 처음 선언할 때 지정한 크기로만 사용 할 수 있다.
  • 배열에 데이터를 추가하기 위해서는 더 큰 크기의 배열을 만들고 원본 배열을 복사하고 남은 자리에 새로운 값을 입력시키는 방법이 있다.

자바에서 배열을 선언하는 방법

//int 타입 배열 선언
int[] i_array;
int i_array[]; 

//배열 생성후 초기화하면 배열의 주소가 할당된다.
int[] i_array = new int[8]; //초기값 0
String[] s_array = new String[8]; //초기값 ""

//배열 선언만 해놓고 나중에 초기화를 시킬수도 있다.
int[] i_array;
i_array = new array[8];

  • 배열을 선언하고 크기를 할당하면 위와 같은 배열의 index가 부여된다..

배열에 새로운 값을 추가할 때

  • 배열은 크기가 고정된 자료구조이기 때문에 원칙적으로는 새로운 자료의 추가가 불가능하다.
  • 하지만, 크기가 다른 새로운 배열을 할당하거나 List로 변환하는 작업을 수행하여 배열에 값이 추가된 것처럼 소스 코드를 구현할 수 있다.
    https://developer-talk.tistory.com/709
    해당 내용에 관한 내용을 참고 해 볼수있는 포스팅이다.

배열에서 값을 제거할 때

  • 마찬가지로 값을 제거하는 기능도 따로 만들어진것이 없다.
  • 따라서 Stream API를 사용하거나 List로 변환 후 제거, System 클래스의 arraycopy 메서드 등을 사용하여 값을 제거할 수 있다.
    https://developer-talk.tistory.com/708
    해당 내용에 관한 내용을 참고 해 볼수있는 포스팅이다.

그밖에 배열에 관한 메서드

String[] sarr = {"a", "b", "c", "d", "z", "e", "abc"};
int[] iarr = {1, 2, 3, 4, 5, 6, 123, 7};

		// ArrayList로 변환
        System.out.println(Arrays.asList(sarr)); // [a, b, c, d, z, e, abc]
        
        // String으로 변환
        System.out.println(Arrays.toString(sarr)); // [a, b, c, z, e, abc]
        System.out.println(Arrays.toString(iarr)); // [1, 2, 3, 4, 5, 6, 123, 7]

        // sort, 오름차순 정렬
        Arrays.sort(sarr);
        System.out.println(Arrays.toString(sarr)); // [a, abc, b, c, d, e, z]
        Arrays.sort(iarr);
        System.out.println(Arrays.toString(iarr)); // [1, 2, 3, 4, 5, 6, 7, 123]

        // sort, 내림차순 정렬 (문자열 배열)
        Arrays.sort(sarr, Collections.reverseOrder());
        System.out.println(Arrays.toString(sarr)); // [z, e, d, c, b, abc, a]
        
        Integer[] Iarr = {1, 2, 3, 4, 5, 6, 7, 123};
        Arrays.sort(Iarr, Collections.reverseOrder());
        System.out.println(Arrays.toString(Iarr)); // [123, 7, 6, 5, 4, 3, 2, 1]

    
        // sort, 인덱싱 정렬
        Arrays.sort(sarr, 3, 6);
        System.out.println(Arrays.toString(sarr)); // [z, e, d, abc, b, c, a]
        Arrays.sort(sarr, 2, 5, Collections.reverseOrder());
        System.out.println(Arrays.toString(sarr)); // [z, e, d, b, abc, c, a]

        // 배열 복사
        String[] arr2 = Arrays.copyOf(sarr, Arrays.asList(sarr).size());
        System.out.println(Arrays.toString(arr2)); // [z, e, d, b, abc, c, a]
    }  
profile
백엔드 개발자 지망생

0개의 댓글