메모리 공간에 5개의 int 타입의 공간을 생성
int[] arr = new int[5];
Arrays.toString()을 통해 배열을 출력할 수 있다
- 배열의 첫번째 위치에 추가 (
addFirst())- 배열의 중간 위치에 추가 (
addAtIndex())- 배열의 마지막 위치에 추가 (
addAtIndex())
private static void addLast(int[] arr, int newValue){
arr[arr.length-1] = newValue;
}
private static void addFirst(int[] arr, int newValue){
for(int i=arr.length-1 ; i>0; i--){
arr[i] = arr[i-1];
}
arr[0]= newValue;
}
private static void addAtIndex(int[] arr, int index, int newValue){
for(int i=arr.length-1; i>0; i--){
arr[i]=arr[i-1];
}
arr[index] = newValue;
}
배열은 배열의 크기를 생성하는 시점에 미리 정해야 한다는 단점이 있다. 동적으로 길이를 늘리고 줄일 수 있는 자료구조인 "리스트(List)" 가 있다.
배열의 용량인 Capacity 를 상황에 따라 늘릴 수 있게 grow() 메소드 활용
public void add(Object e){
if(size == elementData.length){
grow();
}
elementData[size]=e;
size++;
}
private void grow(){
int oldCapacity = elementData.length;
int newCapacity = oldCapacity *2;
elementData = Arrays.copyOf(elementData,newCapacity);
}
Arrays.copy()에 대한 링크: https://velog.io/@khyhlee/Arrays.copyOf
순서대로 마지막에 데이터를 추가/삭제할 때 성능이 좋지만, 앞이나 중간에 데이터를 추가/삭제할 때는 성능이 좋지않다.
왜 성능이 좋지 않은데? ->
--> 이를 위해 "LinkedList(링크드리스트)"를 사용한다.
LinkedList(링크드리스트): https://velog.io/@khyhlee/LinkedList