본문 바로가기

청년취업아카데미/DayLog

[ Java ] Day 02 - ③ Collection Framework - ⑵ List 인터페이스

# List 인터페이스

  • List 구조는 Sequence라고도 하며, 시작과 끝이 선정되어 저장되는 요소들을 일괄적인 정렬상태를 유지하면서 요소들의 저장이 이루어진다. 이런 점 때문에 List 구조하면 배열을 영상하게 되는데 무리는 아니다. 어떻게 보면 List구조와 배열이 같다고 볼 수 있다.
  • List와 배열의 차이 : 배열은 고정 길이, List는 가변길이를 갖는다.
  • List 구조

List 구조

구현 클래스

설명

Stack
  • Stack 클래스의 객체들의 LIFO(Last-In First-Out) 스택을 표현
  • Vector 클래스로부터 파생된 클래스
  • push(), pop(), peek(), search(), empty()
Vector
  • 배열과 같이 정수 인덱스로 접근할 수 있는 접근 소자를 가지고 있음.
  • 배열과 달리 Vector의 크기는 Vector가 생성된 후에 요소를 추가하는 경우에 따라 증대되고 도는 제거할 때에 따라 감소할 수 있다.
  • 요소들의 작업을 위해 iterator로 작업할 수 있으며, 스레드 동기화가 지원되는 List구조
ArrayList
  • List 인터페이스를 구현하고 있는 것 뿐 아니라 ArrayList는 배열의 크기를 조작하기 위하여 메소드들이 제공됨.
  • 공백을 포함한 모든 요소들을 저장 가능.
  • Vector와 유사하지만 ArrayList는 스레드의 동기화는 지원하지 않는다.
  • 개선된 List 구조

개선된 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
  1. ArrayList는 기존의 Vector를 개선한 것으로 구현원리와 기능적으로 동일
  2. 저장 순서 유지, 중복 허용
  3. Vector는 자체적으로 스레드 동기화 처리, ArrayList는 그렇지 않음. Vector보단 ArrayList를 더 많이 씀
  • ArrayList의 장단점
  1. 장점: 배열은 구조가 간단하고 데이터 접근시간이 빠르다
  2. 단점: 크기 변경 불가, 비 순차적일 때 데이터 추가 및 삭제에 많은 시간이 걸림

 

#LinkedList

  • ArrayList vs LinkedList
  1. 순차적으로 데이터를 추가, 삭제하는 경우에는 ArrayList가 빠르다.
  2. 비순차적으로 데이터를 추가, 삭제하는 경우에는 LinkedList가 빠르다.
  3. 접근 시간(access time)은 ArrayList가 빠르다.
Collection Access Time Insert / Delete etc.
ArrayList 빠름 느림 순차적인 추가삭제는 빠름. 비효율적인 메모리 사용
LinkedList 느림 빠름 데이터가 많을 수록 접근성이 떨어짐