티스토리 뷰

컬렉션 프레임 워크란 데이터의 집합을 저장하기 위한 자료구조를 모아놓은 표준 설계이다. 크게 리스트, 셋, 맵 3가지 인터페이스가 있으며 리스트와 셋을 한번더 추상화 한 컬렉션 인터페이스가 존재한다.


List 인터페이스를 구현하는 클래스는 ArrayList LinkedList가 대표적이다.


ArrayList

내부적으로 Object 배열을 갖고 있다. 


장점

1. 내부적으로 배열을 사용하기 때문에 값을 참조하는것은 굉장히 빠르다는 장점이 있다.

2. Object 배열을 사용하기 때문에 어떠한 종류의 데이터도 담을 수 있다.


단점

1. 만약 배열의 크기를 초과하는 인풋이 들어오면 내부적으로 더 큰 크기의 배열을 생성하고 기존의 배열에 들어있던 데이터를 복사하기 때문에 시간이 오래걸린다. 따라서, 데이터 인풋의 크기가 예상 범위 내에서만 동작할 때 ArrayList를 사용하는것이 좋다.

2. 중간에 있는 값을 추가하거나 삭제할 경우 배열 내의 데이터를 대량으로 이동해야 하기 때문에 매우 비효율 적이다.

 


LinkedList

내부적으로 노드(값,다음 노드 포인터)가 연결되어 있는 형태이다. 근데 사실 단방향 연결 리스트가 아닌 양방향 연결 리스트로 구현 되어 있다.


장점

1. 데이터의 삭제와 추가가 매우 빠르다.


단점

1. 값을 찾을때 맨 앞에서부터 순차적으로 찾아 들어가야 하기 때문에 참조가 느리다.

(이 단점을 극복 하기 위해 단방향이 아닌 양방향 연결 리스트를 내부적으로 사용한다.)


스택과 큐

스택은 스택의 탑에 있는 값을 추가하고 꺼내는 연산만을 수행하면 된다. 그렇기 때문에 ArrayList로 스택을 구현하는것이 더 좋다. 하지만 큐의 경우엔 맨앞에 있는것을 꺼내는 연산을 수행해야 하기 때문에 ArrayList로 구현하면 그 뒤에 있는 데이터를 모두 한칸씩 앞으로 땡겨야 해서 매우 비효율적이다. 그래서 큐는 LinkedList로 구현해야 한다.





댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함