뉴질랜드 다이어리(NZ Diary) 라빠
ArrayList, Vector and LinkedList in Java 본문
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
공감 한번씩 눌러주세요.
더 좋은 글과 내용으로 보답드립니다!
'개발' 카테고리의 다른 글
[Android] Must Have Libraries (0) | 2016.11.08 |
---|---|
[Android] Complete Android Fragment Lifecyce (0) | 2016.11.01 |
2GB 까지 파일 전송을 마음껏! WeTransfer! (0) | 2016.07.17 |
Java의 volatile 키워드에 대한 이해 (0) | 2016.07.03 |
Coderpad 소개. 개발자 기술 인터뷰를 위한 도구. (0) | 2016.07.03 |