자바의 자료구조는 크게 3가지인데 각각의 자료구조는 아래와 같이 Map, List, Set 으로 이루어져 있다.
각 자료구조 클래스는 아래와 같은 특징을 가진다.
List
List는 데이터를 순서에 맞게 일렬로 구성하는데, 인덱스가 부여되기 때문에 인덱스로 검색할 수 있다.
Set 과 는 다르게 중복을 허용한다.
List 중 가장 많이 사용하는 클래스인 ArrayList에 대해 알아보자.
- ArrayList
ArrayList는 resizable-array이다. 즉 저장용량이 자동으로 늘어난다. 기본 생성자로 ArrayList를 생성하면 10개의 객체 저장공간을 가진다. 물론 처음부터 저장용량을 지정할 수 있다.
그리고 ArrayList는 Object타입으로 변환되기 때문에, 모든 종류의 객체를 저장할 수 있다. 하지만, 저장 및 조회할 때 Object로 변환해서 사용해야 하므로 성능이 좋지 않다. 이런 단점을 보완하는 것이 제너릭이다.
사용예)
기본 Object List list = new ArrayList();
list.add("value1");
String name = (String)list.get(0);
제너릭 적용 List list = new ArrayList();
list.add("value1");
String name = list.get(0);
- ArrayList VS LinkedList
일반적으로 ArrayList는 LinkedList 보다 검색이 빠르다. 또한 순차적을 배열에 객체를 추가 및 삭제 하는 경우에도
ArrayList가 더 좋은 성능을 보인다. 반면에, 배열의 중간 위치에 추가 될 때 LinkedList는 Array 크기를 조정하거나,
인덱스를 업데이트 할 필요가 없기 때문에 링크된 목록에서 객체의 추가, 제거 작업은 LinkedList가 ArrayList보다 더 빠르다. 하지만 LinkedList는 앞뒤 두개의 참조를 저장하기 때문에 ArrayList보다 더 많은 메모리 영역을 차지하게 될 것이다.
- Set
-Sorting
set 클래스의 정렬 방식은 클래스마다 다르다.
-HashSet: 랜덤
-LinkedHashSet: 입력 순서대로
-TreeSet: comparator에 의해서
- Map