뉴질랜드 다이어리(NZ Diary) 라빠

ArrayList, Vector and LinkedList in Java 본문

개발

ArrayList, Vector and LinkedList in Java

Donochi 2016. 10. 11. 11:23


Java 에서 가장 빈번하게 사용되는 Collections Class 는 바로, 

ArrayList, Vector 그리고 LinkedList 일것이다.


세 클래스 모두 데이터를 저장하는 목적으로 사용되지만,

아주 약간의 차이가 있다.

그 차이를 아느냐가 프로그램의 질과 프로그래머의 능력을 가늠하는 척도가 되는 경우가 많으므로,

한번 알아보자..



기본적으로 ArrayList 와 Vector 는 대부분의 경우 교차사용이 가능하다.

둘의 차이점은 아래와 같다.

- Synchronization

Vector 가 Thread Safe 하고, ArrayList 는 그렇지 않다. 즉, 여러 스레드에서 공통적으로 사용해야 할 경우를 제외하고는 ArrayList 를 사용하는것이 빠르다. 

- Data Growth

Array 와 달리, ArrayList 와 Vector 는 사이즈가 가변적이다. 데이터를 추가하다가 최초 설정한 크기를 넘어서면 자동적으로 크기가 증가한다. 다만, 한가지 차이점은 Vector 는 크기가 매번 두배로 증가하는것에 비해, ArrayList 는 현 크기의 50% 가 증가하는 구조라는 점이다. 그리고, Vector 에는 또다른 장점이 있는데, 증가하는 크기를 설정할 수 있다는 점이다.


ArrayList, Vector 와 LinkedList 의 차이점은 사용성에서 발견할 수 있는데, ArrayList 와 Vector 는 특정 위치의 데이터를 확인하는데 최적화 되어있는 반면 데이터를 추가하거나 제거하는 동작은 비교적 많은 오퍼레이션이 필요합니다. 반면, LinkedList 는 그와 반대로, 데이터를 추가하고, 빼는 작업은 간단하게 이루어지지만, 특정 데이터를 찾아내기 위해서는 비교적 많은 오퍼레이션이 필요합니다. 즉, 용도에 맞게 Collections Class 를 선택적으로 사용해야 한다는 소리입니다.


간단하지만, 간단하지 않은 Class 선택. 꼭 용도에 맞는 선택을 하기 바랍니다.


*** Practical Java 의 저자 Peter Haggar 는 성능이 중요한 코드에는 Array 자체를 사용하기를 권장하고 있습니다. 조금의 수고로움을 더하는대신에 최고의 성능을 얻을 수 있기 때문이죠.


참고 : http://www.javaworld.com/article/2077425/java-se/vector-or-arraylist-which-is-better.html






공감 한번씩 눌러주세요.

더 좋은 글과 내용으로 보답드립니다!