# List 인터페이스
- List 구조는 Sequence라고도 하며, 시작과 끝이 선정되어 저장되는 요소들을 일괄적인 정렬상태를 유지하면서 요소들의 저장이 이루어진다. 이런 점 때문에 List 구조하면 배열을 영상하게 되는데 무리는 아니다. 어떻게 보면 List구조와 배열이 같다고 볼 수 있다.
- List와 배열의 차이 : 배열은 고정 길이, List는 가변길이를 갖는다.
- List 구조
구현 클래스 |
설명 |
Stack |
|
Vector |
|
ArrayList |
|
- 개선된 List 구조
# Stack
- 객체를 후입선출(LIFO)하는 구조이며, Vector라는 클래스를 확장하였음.
- Stack의 주요 메소드에는 객체의 저장시의 push() 메소드와 검출 시 사용하는 pop() 메소드, Stack의 가장 위쪽 객체를 의미하는 peek() 메소드, 그리고 Stack이 비어있는 지 판별해주는 empty() 메소드와 객체를 검색해주는 search() 메소드들이 있다.
- Stack 예제
...더보기
import java.util.Stack;
public class StackEx {
public static void main(String[] args) {
String[] pet= {"지렁이", "강아지", "멍멍이","야옹이"};
Stack<String> st = new Stack<>();
for(String str:pet) {
System.out.println("push --> "+str);
st.push(str);
}
System.out.println("-----------------");
while(!st.isEmpty()) {
System.out.println("pop --> "+st.pop());
}
}
}
# ArrayList
- ArrayList vs Vector
- ArrayList는 기존의 Vector를 개선한 것으로 구현원리와 기능적으로 동일
- 저장 순서 유지, 중복 허용
- Vector는 자체적으로 스레드 동기화 처리, ArrayList는 그렇지 않음. Vector보단 ArrayList를 더 많이 씀
- ArrayList의 장단점
- 장점: 배열은 구조가 간단하고 데이터 접근시간이 빠르다
- 단점: 크기 변경 불가, 비 순차적일 때 데이터 추가 및 삭제에 많은 시간이 걸림
#LinkedList
- ArrayList vs LinkedList
- 순차적으로 데이터를 추가, 삭제하는 경우에는 ArrayList가 빠르다.
- 비순차적으로 데이터를 추가, 삭제하는 경우에는 LinkedList가 빠르다.
- 접근 시간(access time)은 ArrayList가 빠르다.
Collection | Access Time | Insert / Delete | etc. |
ArrayList | 빠름 | 느림 | 순차적인 추가삭제는 빠름. 비효율적인 메모리 사용 |
LinkedList | 느림 | 빠름 | 데이터가 많을 수록 접근성이 떨어짐 |
'청년취업아카데미 > DayLog' 카테고리의 다른 글
[ Java ] Day 03 - ② Thread의 생성 (0) | 2019.07.11 |
---|---|
[ Java ] Day 03 - ① Thread의 개념 (0) | 2019.07.11 |
[ Java ] Day 02 - ③ Collection Framework (0) | 2019.07.10 |
[ Java ] Day 02 - ② 예외 처리 (0) | 2019.07.10 |
[ Java ] Day 02 - ① Design Pattern (0) | 2019.07.10 |