import java.util.LinkedList;	// LinkedList 
import java.util.Queue;			// Queue
import java.util.Stack;			// Stack

public class NewCollection {
	public static void main(String[] args) {
		// 컬렉션
		// List류 = 위치파악 
		// ArrayList 배열리스트
		// 데이터의 잦은 이동, 추가 or 삭제 등에 불리하지만, 인덱싱 방식을 사용하고 있어, 검색(탐색)에 유리

		// LinkedList 연결리스트
		// 노드를 사용하고 있어, 검색에 불리하지만, 테이터의 추가 or 삭제에 유리
		// 노드(node) = [데이터부][저장(주소)부]

		LinkedList ll = new LinkedList(); // 크기를 미리 정해놓을수 없음
		// 다양한 데이터의 추가, 삭제가 가능하다.
		
		
		// ==========================================================================
		
		
		// 스택 vs 큐	=> 위치관련 X 저장관련 O
		// Stack
		// : FILO == 선입후출
		// == : LIFO == 후입선출
		// 입구가 1개뿐인 선형구조
		// ex) 실행취소 (ctrl + z), 뒤로가기, 최근 방문한 페이지
		Stack s = new Stack();
		System.out.println(s); // toString
		s.push(10);
		s.push(20);
		s.push(30);
		System.out.println(s);
		System.out.println(s.peek() + " : 삭제를 동반 안한 출력 == peek()"); // 삭제를 동반 안한 출력
		System.out.println(s);
		System.out.println(s.pop() + " : 삭제를 동반 한 출력 == pop()");	 // 삭제를 동반한 출력
		System.out.println(s);
		System.out.println("----------------------------------------------\n");
		
		// Queue
		// : FIFO == 선입선출
		// == LILO == 후입후출
		// 입구와 출구가 정해진 선형구조
		// ex) 대기열, 수강신청, 티켓팅
		// 큐라는 구조의 기반을 LinkedList로 구현 하고있음
		Queue q = new LinkedList();	// 기반이 LinkedList이기 때문에 new LinkedList로 써야함
		q.offer(40);
		q.offer(50);
		q.offer(60);
		System.out.println(q);
		System.out.println(q.peek() + " : 삭제를 동반 안한 출력 == peek()");	// 삭제를 동반 안한 출력
		System.out.println(q);
		System.out.println(q.poll() + " : 삭제를 동반한 출력 == pull()");		// 삭제를 동반한 출력
		System.out.println(q);
	}
}

+ Recent posts