본문 바로가기
Programming/DATA STRUCTURE

[Data Structure] Array List

Array List






● Insert 추가

내부적으로 데이터를 배열에 저장한다.

배열의 특성상 데이터를 리스트의 처음이나 중간에 저장하면 이후의 데이터들이 한칸씩 뒤로 물러난다.





● Remove 삭제

삭제도 추가와 비슷하다.

빈자리가 생기면 빈자리를 채우기 위해서 순차적으로 한칸씩 땡겨야 한다.




단점 : 데이터를 추가하거나 삭제 할 때 마다 시간이 많이 소요된다.


※ 장점 : 인덱스 값을 알고 있기 때문에 데이터를 가져오는 것은 매우 빠르다.

주소를 알고 있기 때문에 건물을 찾아가기 빠르다





JAVA


컬렉션 프레임워크라는 자체적인 라이브러리 안에 Array List를 내장하고 있기 때문에 직접 Array List를 구현해서 사용 할 일이 없으며 사용하는 방법에 대해서 명확한 인식을 가지고 있어야 한다



● 생성

Array List를 사용하기 위해서는 우선 Array List 객체를 만들어야 한다.

저장용량(capacity)을 초과한 객체들이 들어오면 자동적으로 저장용량이 늘어난다.

1
ArrayList<Integer> numbers = new ArrayList<>();
cs



Array List는 java.util.ArrayList에 포함되어 있기 때문에 import를 해주어야 한다.

1
import java.util.ArrayList;
cs




추가

Array List 객체가 가지고 있는 add라는 메소드를 사용한다.

1
2
3
4
numbers.add(10);
numbers.add(20);
numbers.add(30);
numbers.add(40);
cs



특정 위치에 추가하고 싶다면 메소드 add의 첫번째 인자로 인덱스를 지정합니다.

1
numbers.add(150);
cs






삭제


특정 인덱스에 위치하는 엘리먼트를 삭제 할 때는 remove 를 사용한다.

1
numbers.remove(2);
cs



※ 빈번한 객체 삭제와 삽입이 일어나는 곳에서는 Array List를 사용하는 것이 바람직하지 않다.

이런 경우라면 Linked List를 사용하는 것이 좋다.



● 엘리먼트를 가져오는 방법

내부적으로 배열을 이용하기 때문에 매우 빠르게 엘리먼트를 가져 올 수 있다

1
numbers.get(2);
cs




반복

자바에서는 Array List를 탐색하기 위한 방법으로 iterator을 제공 한다.

이것은 주로 객체지향 프로그래밍에서 사용하는 반복기법 이며, 우선 Iterator 객체를 만들어야 한다.

1
Iterator it<Integer> = numbers.iterator();
cs


Iterator 객체는 numbers 객체 내부에 저장된 값을 하나씩 순회하면서 탐색 할 수 있도록 돕는 객체이다.

1
2
3
while(it.hasNext()){
    System.out.println(it.next());          
}
cs


is.next() 메소드를 호출 할 때마다 엘리먼트를 순서대로 리턴한다.

만약 더 이상 순회할 엘리먼트가 없다면 it.hasNext()의 값은 false가 되면서 while문이 종료가 된다.


단순 출력을 위해서 순회를 하지는 않는다. 순회 과정에서 필요에 따라서는 엘리먼트를 삭제/추가 하는 작업을 해야 한다.

1
2
3
4
5
6
while(it.hasNext()){
    int value = it.next();
    if(value == 30){
        it.remove();
    }                       
}
cs


it.remove()는 it.next()를 통해서 반환 된 numbers의 엘리먼트를 삭제하는 명령어 이다.

'Programming > DATA STRUCTURE' 카테고리의 다른 글

[Data Structure] Linked List  (1) 2018.05.23
[Data Structure] Array  (1) 2018.05.23
[Data Structure] Data Structure란?  (2) 2018.05.23