Data Structure, JAVA, array/arraylist/linkedlist
Array / ArrayList / LinkedList
1. Array vs ArrayList
배열 (Array)
- 배열의 크기는 한번 정하면, 변경할 수 없다.
- int[] arr = new inte[3];
- 배열 초기화시 메모리에 할당되어 ArrayList보다 속도가 빠르다.
- 다차원 생성이 가능하다.
- int[][] multi = new int[2][2][2];
- 정렬 : Arrays.sort(arr);
ArrayList
- 크기가 가변적이다.
- 데이터 추가,삭제시 메모리를 재할당하기 때문에 속도가 배열보다 느리다.
- 다차원 생성이 불가능하다.
- 정렬 : Collections.sort(arraylist); 예제
- ArrayList
arraylist = new ArrayList (); - add arraylist.add(1); 두번 째 위치에 2 삽입 : arraylist.add(1, 2);
- get 두번째 값을 구하고 싶다면 : arraylist(1);
- size ArrayList의 개수를 리턴한다. : arraylist.size();
- contains
contains 메소드는 리스트 안에 해당 값이 있는지 검색 후 boolean 값으로 리턴 - remove remove(객체) : 삭제결과 boolen으로 리턴 remove(index) : 삭제 후 삭제된 항목 리턴
2. ArrayList vs LinkedList
ArrayList
- 구조 : 데이터들이 순서대로 쭉 늘어선 구조
- 삽입, 삭제시 자료의 최대 개수에 영향을 받는다. O(n)
- ArrayList는 크기가 한정되어있다
- 검색 : 무작위 접근이 가능해서 LinkedList보다 빠르다.
LinkedList
- 구조 : 자료의 주소 값으로 서로 연결되어 있는 구조
- 삽입,삭제를 빠르게 수행 할 수 있다.
- 무한 개수의 자료 삽입 가능. (메모리 용량 무한정 이라면)
-
검색 : 순차 접근만이 가능해서 ArrayList보다 느리다.
Reference
http://blog.naver.com/PostView.nhn?blogId=sangrime&logNo=220622445166 http://www.nextree.co.kr/p6506/