List 는 기본적으로 사용함에 있어서 Set과 특별한 차이점은 없으나.
넣는대로 Index (색인)이 된다는 점 , 중복을 허용한다는 점이 다르다.
그럼 List 의 종류에 대해 알아보자.
LinkedList
- 서로 앞뒤의 관계에 대해서만 정보를 가지고 있다 . 나머지 사항은 ArrayList와 비슷하다.
- 그러나 LinkedList 는 서로 앞뒤에 대한 Link정보만 갖고 있기 때문에 검색하는데
상당히 느린 구조를 띈다.
- 그러나 서로의 연결정보만 갖고 있으므로 추가 삭제에는 , 특히 대량으로 Data의
추가 삭제가 이뤄질 경우 상당히 빠른 구조를 띈다.
ArrayList
- List의 대표적인 클래스고 가장 많이 쓰인다.
- 각 Data가 Index 번호를 갖고 있어서 , 검색에 상당히 용이하다.
- 그러나 Array 의 형태를 띄고있어서 Data삭제 또는 추가시 임시 배열을 만들고
옮기는 방법을 사용하므로 , Data의 잦은 추가 삭제 , 대량 추가 삭제가 많을 경우에는
적당하지 않다.
Vector
- 위 2 클래스의 아버지와 같은 클래스로 Java 1.0 부터 사용되어 왔고 , 지금도 가끔
사용하는 클래스 이긴 합니다.. 기능은 ArrayList 와 동일하나 동기화 기능이 포함되어
있다는 점이 차이점입니다.
그럼 List 관련 클래스 중 누가누가 빠른가??
Vector
LinkedList
ArrayList
10만 runCount for 문 처리
ArrayList : TotalUsedTime :13 ms
LinkedList : TotalUsedTime :69939 ms
Vector : TotalUsedTime :12 ms
LinkedList Select 시간이 장난아니게 오래 걸리는걸 확인할 수 있다.
여기서 LinkedList 를 순차 처리 할수 있게 poll() 메소드를 사용해보자
ArrayList : TotalUsedTime :13 ms
LinkedList : TotalUsedTime :14 ms
Vector : TotalUsedTime :13 ms
엄청난 차이를 보인다.
LinkedList 를 조회에도 사용할 경우 poll() 메소드를 반드시 써주자
댓글 없음:
댓글 쓰기