Java

[중앙정보처리학원] Java* 배열 (array) 활용

해보구 2024. 4. 12. 08:50

 

자바스크립트에는 배열에 이미 내장된 함수 들이 있다. 예를들면 push 라던가 pop이라던가 slice라던가. 하지만 자바는 내장되어있지 않고 직접 기능을 만들어 주어야 한다. js에 비교해 자바는 약간 좀 더 손이 많이 가고 분명확실하게 디테일들을 직접 만들어야 된다는 번거로움이 있지만 그만큼 좀 더 깊이가 있고 탄탄한 것 같다.

 

array.copy

public class ArrayCopy {

    public static void main(String[] args) {

        String[] pets = {"멍멍이", "야옹이", "쨱짹이"};
//        String[] petsCopy = pets;   // 복사 1 : 배열복사가 아니라 배열 주소 복사


        String[] petsCopy = new String[pets.length];
        for (int i = 0; i < pets.length; i++) {
            petsCopy[i] = pets[i];

        }   // 찐 복사 : 요지는 새로운 방을 만들고 직접 옮겨준다.
        //  const petsCopy = [...pets];  <== 자바스크립트 찐복사


        pets[1] = "냥냥이"; // 복사 후 원본 수정


        System.out.println("pets = " + Arrays.toString(pets));
        System.out.println("petsCopy = " + Arrays.toString(petsCopy));

    }
}

 

 

array.delete

public class ArrayDelete {

    public static void main(String[] args) {

        // 배열에서 원하는 위치의 값 삭제하기
        int[] numbers = {1, 3, 5, 7, 9, 11};

        int targetIndex = 2;


        for (int i = targetIndex; i < numbers.length - 1; i++) {
            numbers[i]= numbers[i+1];
        }

//        numbers[i] = numbers[i+1];
//        numbers[2] = numbers[3];
//        numbers[3] = numbers[4];
//        numbers[4] = numbers[5];


        int[] temp = new int[numbers.length -1];
        for (int i = 0; i < temp.length; i++) {
            temp[i] = numbers[i];
        }
        numbers = temp;
        temp = null;


        System.out.println(Arrays.toString(numbers));
    }
}

 

 

array.insert

public class ArrayInsert {


    public static void main(String[] args) {


       int[] arr = {10, 50, 90, 100, 150};
       int newNumber = 66;
       int targetIndex = 2;


       // 50 과 90 사이에 66을 삽입!!//


        // 1. 사이즈가 1개 더 큰 배열 생성
        int[] temp = new int[arr.length + 1];

        // 2. 기존 데이터 복사
        for (int i = 0; i < arr.length; i++) {
            temp[i] = arr[i];
        }

        // 3. 삽입위치에서 데이터 뒤로 1칸씩 이동
        //    이동 순서는 끝에서부터 시작해야 함
        for (int i = arr.length; i > targetIndex; i--) {
            temp[i] = temp[i-1];
        }

        // 4. 새로운 데이터를 타겟 인덱스자리에 복사
        temp[targetIndex] = newNumber;

        // 5. 주소값 이전
        arr = temp; temp = null;

        System.out.println("arr: " + Arrays.toString(arr));
        System.out.println("temp: " + Arrays.toString(temp));

    }
}

 

 

array.pop

public class ArrayPop {

    public static void main(String[] args) {

        int[] numbers = {10, 20, 30, 40, 50, 60};

        // pop: 배열의 맨 끝 데이터 삭제하면서 꺼내옴

        // 1. 기존사이즈보다 1개 적은 사이즈의 배열을 생성
        int[] temp = new int[numbers.length -1];

        // 2. 원본배열에서 맨 끝인덱스를 제외한 모든 내용 사본에 복사
        for (int i = 0; i < temp.length; i++) {
            temp[i] = numbers[i];
        }
        // 삭제값 백업
        int removedNumber = numbers[numbers.length -1];

        // 3. 주소값 이전
        numbers = temp;
        temp = null;


        System.out.println("numbers: "+ Arrays.toString(numbers));
        System.out.println("numbers: "+ Arrays.toString(temp));
        System.out.println("삭제된 값 = " + removedNumber);

    }
}

 

array.push

ublic class ArrayPush {

    public static void main(String[] args) {


        int[] numbers = {10, 20, 30, 40};
        int newNumber = 50;

        // 1. 기존 사이즈보다 1개가 큰 새로운 배열 생성
        int[] temp = new int[numbers.length + 1];

        // 2. 기존 데이터를 새로운 배열에 전부 복사
        for (int i = 0; i < numbers.length; i++) {
            temp[i] = numbers[i];
        }

        // 3. 새 배열의 끝인덱스에 넣을 데이터 추가하기
        temp[temp.length -1] = newNumber;

        // 4. numbers에 저장된 주소값을 temp의 주소값으로 변경
        numbers = temp;

        // 5. temp는 더이상 배열을 관리하면 안됨
        temp = null;
        System.out.println("numbers: "+ Arrays.toString(numbers));
        System.out.println("numbers: "+ Arrays.toString(temp));
    }
}

 

 

array.search

public class ArraySearch {



    public static void main(String[] args) {



        String[] foods = {"족발", "파스타", "치킨", "삼겹살"};

        String target = "치킨";

        int index= -1;

        for (int i = 0; i < foods.length; i++) {
            if (target.equals(foods[i])) {
                index = i;
                break;

            }
        }
        System.out.println("index = " + index);
    }
}