배열
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);
}
}