[Java] Collection 프레임워크(1) - List(LinkedList, Stack, Vector, ArrayList)
Java에서 Collection 은 데이터의 집합, 그루핑을 의미하며,
이러한 데이터나 자료구조인 Collection과 이를 구현하는 클래스를
JCF(Java Collections Framework) 라는 이름의 인터페이스가 제공한다.
List 인터페이스
리스트는 순서가 있는 데이터의 집합으로, 데이터의 중복을 허용한다.
즉 배열과 비슷하게 List는 인덱스가 주어지고, 해당 인덱스마다 개별의 데이터 값이 입력된다. 따라서 index[0]와 index[1]에 각각 1이라는 데이터가 저장되더라도 각각은 다른 주소값을 가지고 있다는 의미이다.
1. LinkedList
- 양방향 포인터 구조로, 데이터의 삽입과 삭제가 빈번하게 발생할 경우 데이터의 위치 정보만 수정하면 되기 때문에 유용하게 사용된다.
- 스택구조, 큐, 양방향 큐 등을 만들기 위한 용도로 사용된다.
2. Stack
- 스택은 추상 자료형이다.
- 스택이란 입구와 출구가 동일한 상자 구조를 생각하면 쉽다. 스택은 데이터를 차곡차곡 상자 안에 쌓는다. 그 후 출력을 할 때에는 가장 마지막에 쌓은 데이터부터 출력하게 된다. 후입선출의 자료구조라고 볼 수 있다.
* 스택 클래스의 메소드와 사용과정
boolean empty() | 해당 스택이 비어 있으면 true를, 비어 있지 않으면 false를 반환함. |
E peek() | 해당 스택의 제일 상단에 있는(제일 마지막으로 저장된) 요소를 반환함. |
E pop() | 해당 스택의 제일 상단에 있는(제일 마지막으로 저장된) 요소를 반환하고, 해당 요소를 스택에서 제거함. |
E push(E item) | 해당 스택의 제일 상단에 전달된 요소를 삽입함. |
int search(Object o) | 해당 스택에서 전달된 객체가 존재하는 위치의 인덱스를 반환함. 이때 인덱스는 제일 상단에 있는(제일 마지막으로 저장된) 요소의 위치부터 0이 아닌 1부터 시작함. |
4. ArrayList
- ArrayList 클래스는 배열을 이용하기 때문에 인덱스를 이용해 배열 요소에 빠르게 접근할 수 있습니다.
- 그러나 배열은 크기를 변경할 수 없는 인스턴스이므로, 크기를 늘리기 위해서는 새로운 배열을 생성하고 기존의 요소들을 옮겨야 하는 복잡한 과정을 거쳐야 한다. 따라서 데이터의 추가와 삭제가 빈번할 경우, 비효율적이다.
'Java' 카테고리의 다른 글
[Java] 스트림(Stream) 기본 정리 및 메소드 사용 예제 (0) | 2022.03.04 |
---|---|
[Java] Collection 프레임워크(2) - Set(HashSet, TreeSet) (0) | 2022.03.02 |
[Java] Collections.sort // Comparable+CompareTo 와 Comparator 를 이용한 정렬 (0) | 2022.02.17 |
[Java] Arrays.sort / list.sort / Collections.sort / 정렬하는 방법 정리 (0) | 2022.02.17 |
[Java] 메소드 사용에 있어서의 break, return 의 차이점 (0) | 2022.02.15 |