배열

2023. 2. 15. 18:33자료구조/선형자료구조

- 개념


- 구현 

1. 내장 클래스로

// 선형 자료구조 - 배열
package Array;

import java.util.ArrayList;
import java.util.Arrays;

public class array {
    public static void main(String[] args) {
        // 1차원 배열
        System.out.println("== 1차원 배열 ==");
        int[] arr = {1,2,3,4,5};
        for (int data: arr) {
            System.out.println("item: " + data);
        }
        arr[1] = 100;
        System.out.println("arr = " + Arrays.toString(arr));
        System.out.println("arr = " + arr);             // arr의 메모리주소가 출력됨

        // 2차원 배열
        System.out.println("== 2차원 배열 ==");
        int[][] arr2 = {{1,2,3}, {4,5,6}};
        System.out.println(arr2[0][1]);

        for (int[] row: arr2) {
            System.out.println("row: " + Arrays.toString(row));
            for (int item: row) {
                System.out.println("item: " + item);
            }
        }

        // ArrayList - 1차원, 2차원
        System.out.println("== ArrayList ==");
        ArrayList list1 = new ArrayList(Arrays.asList(1,2,3));
        System.out.println("list1: " + list1);
        list1.add(4);
        list1.add(5);
        System.out.println("list1: " + list1);
        list1.remove(2);                // [2]의 값 삭제
        System.out.println("list1: " + list1);
        list1.remove(Integer.valueOf(2));   // 값2 삭제
        System.out.println("list1: " + list1);

        ArrayList list2d = new ArrayList();         //
        ArrayList list1d1 = new ArrayList(Arrays.asList(1,2,3));        // 각 행이 될 arrayList
        ArrayList list1d2 = new ArrayList(Arrays.asList(4,5,6));        // 각 행이 될 arrayList
        list2d.add(list1d1);
        list2d.add(list1d2);
        System.out.println("list1d1: " + list1d1);
        System.out.println("list1d2: " + list1d2);
        System.out.println("list2d: " + list2d);
    }
}

 

 

2. 기본 배열로 직접 구현

// 기본 배열로 배열의 생성, 삽입, 삭제 기능 구현
package Array;

import java.util.Arrays;

class MyArray {
    int[] arr;

    // 배열 초기 사이즈 설정
    MyArray(int size) {
        this.arr = new int[size];
    }

    // 배열에 데이터 삽입
    public void insertData(int index, int value) {
        if (index < 0 || index > this.arr.length) {
            System.out.println("Index Error");
            return;
        }
        int[] temp = this.arr.clone();
        this.arr = new int[this.arr.length + 1];

        for (int i = 0; i < index; i++) {
            this.arr[i] = temp[i];
        }
        this.arr[index] = value;
        for (int i = index + 1; i < this.arr.length; i++) {
            this.arr[i] = temp[i - 1];
        }
    }

    // 배열에서 특정 데이터 삭제
    public void removeDate(int data) {
        int index = -1;

        for (int i = 0; i < this.arr.length; i++) {
            if (this.arr[i] == data) {
                index = i;
            }
        }
        if (index == -1) {
            System.out.println("해당 데이터가 없습니다.");
            return;
        }

        int[] temp = this.arr.clone();
        this.arr = new int[this.arr.length - 1];
        for (int i = 0; i < index; i++) {
            this.arr[i] = temp[i];
        }
        for (int i = index + 1; i < temp.length; i++) {
            this.arr[i - 1] = temp[i];
        }
    }
}

public class practice1 {

    public static void main(String[] args) {
        int size = 5;
        MyArray myArray = new MyArray(size);

        for (int i = 0; i < size; i++) {
            myArray.arr[i] = i + 1;
        }
        System.out.println(Arrays.toString(myArray.arr));

        myArray.arr[0] = 10;
        System.out.println(Arrays.toString(myArray.arr));

        myArray.insertData(2, 20);
        System.out.println(Arrays.toString(myArray.arr));
        myArray.insertData(6, 60);
        System.out.println(Arrays.toString(myArray.arr));
        myArray.insertData(-1, 0);

        myArray.removeDate(4);
        System.out.println(Arrays.toString(myArray.arr));
        myArray.removeDate(5);
        System.out.println(Arrays.toString(myArray.arr));

        myArray.removeDate(99);
    }
}

'자료구조 > 선형자료구조' 카테고리의 다른 글

해시테이블  (0) 2023.02.18
연습문제_배열  (0) 2023.02.15
연습문제_큐  (0) 2023.02.15
연습문제_스택  (0) 2023.02.15
  (0) 2023.02.14