정의: 메모리에 연속공간으로 저장하는 데이터 ”물리적으로 붙어 있다“
생성할 때, 미리 길이를 정해서 생성해준다 (자바 배열 참고)
Array 생성 & for each:
public class Main {
public static void main(String[] args) {
// 1차원 배열 생성 & for each
int[] arr1 = {1, 2, 3, 4, 5};
for (int array: arr1) {
System.out.println("array = " + array);
}
// 2차원 배열 생성 & for each
int[][] arr2 = {{1, 2, 3}, {4, 5, 6}};
for(int[] row: arr2) {
for(int array: row) {
System.out.println("array = " + array);
}
}
ArrayList 란?
Array와 다르게, 크기 미리 설정 필요 없고 후에 더하고/뺄 수 있는 클래스. 즉, “resizable” array.
import java.util.ArrayList; //import ArrayList Class
import java.util.Arrays;
ArrayList list1 = new ArrayList(Arrays.asList(1, 2, 3)); //Create ArrayList Object
ArrayList<String> names = new ArrayList<String>(); //Create ArrayList Object, but for String
.add( x ) → 원소 쓰면 끝에 추가 & 배열 쓰는것도 가능하다! (list2d 배열에 list1d1 + list1d2 .add 해주니 2차원 배열 되었다)
.remove( y ) → index number 위치의 원소 제거
.remove(Integer.valueOf( )) → 지정된 원소 제거
// ArrayList - 1차원
ArrayList list1 = new ArrayList(Arrays.asList(1, 2, 3));
list1.add(5); // {1, 2, 3, 5}
list1.remove(2); // {1, 2, 5}
list1.remove(Integer.valueOf(2)); // {1, 5}
// ArrayList - 2차원
ArrayList list2d = new ArrayList();
ArrayList list1d1 = new ArrayList(Arrays.asList(1, 2, 3));
ArrayList list1d2 = new ArrayList(Arrays.asList(4, 5, 6));
list2d.add(list1d1);
list2d.add(list1d2);
System.out.println("list1d1 = " + list1d1);
System.out.println("list1d2 = " + list1d2);
System.out.println("list2d = " + list2d);
}
}
“연속저장“ 특징 덕분에 자료 수정 (삭제/추가)가 어렵고, 메모리 사용이 비효율적이나, 자료 access는 더 빠르다.