[1]LinkedList 전체항목
package kr.or.ddit.basic;
import java.util.LinkedList;
public class T02LinkedListTest {
public static void main(String[] args) {
/*
* Stack => 후입선출 (LIFO)의 자료구조
* Queue => 선입선출 (FIFO)의 자료구조
*/
LinkedList<String> stack = new LinkedList<String>();
/*
* Stack 방식으로 처리하기 위한 메서드
* 1) 데이터 추가 : Push (저장할값)
* 2) 데이터 꺼내기 : pop() => 데이터를 꺼내온 후 해당 데이터를 삭제한다.
*/
stack.push("홍길동");
stack.push("일지매");
stack.push("변학도");
stack.push("강감찬");
System.out.println("현재 Stack값들 : " + stack);
String data = stack.pop();
System.out.println("꺼내온 데이터 : " + data);
System.out.println("꺼내온 데이터 : " + stack.pop());
System.out.println("현재 stack 값들 : " + stack);
stack.push("성춘향");
System.out.println("현재 stack값들 : " + stack);
System.err.println("꺼내온 데이터 : " + stack.pop());
System.out.println();
System.out.println("========================");
System.out.println();
LinkedList<String > queue = new LinkedList<String>();
/*
* Queue 방식으로 동작하게 하기 위한 메서드
* 1) 데이터 추가 : offer(저장할값)
* 2) 데이터 꺼내기 : poll() => 데이터를 꺼내온 후 데이터는 삭제 된다.
*/
queue.offer("홍길동"); //offer 제공하다의 뜻
queue.offer("일지매");
queue.offer("변학도");
queue.offer("강감챤");
System.out.println("현재 queue 값들 : " + queue);
String temp = queue.poll();
System.out.println("꺼내온 데이터 : " + temp);
System.out.println("꺼내온 데이터 : " + queue.poll());
System.out.println("현재 queue 값들 : " + queue);
if(queue.offer("성춘향")) {
System.out.println("신규등록 데이터 : 성춘향");
}
System.out.println("현재 queue 값들 : " + queue);
System.out.println("꺼내온 데이터 : " + queue.poll());
}
}
// 내용정리
// Stack = 값을 넣은것에서 마지막에 넣은 값부터 나오고 [1-2-3-4-5] => [5-4-3-2-1]
// queue = 값 을 넣은것에서 처음에 넣은 값부터 나옴 [1-2-3-4-5] => [1-2-3-4-5]
// ArrayList = 중간에 값을 넣거나 삭제하기가 힘들다는 단점이있다.
// 링크트 리스트 = 중간에 값을 넣거나 삭제하기가 편하다는 장점이있지만.
결과값
[2] Stack 사용 구문
Stack = 후입선출 (LIFO)의 자료구조
1). 데이터 추가 : push (저장할값)
2). 데이터 꺼내기 : pop() 데이터를 꺼내온후 해당 데이터를 삭제한다.
LinkedList<String> stack = new LinkedList<String>();
/*
* Stack 방식으로 처리하기 위한 메서드
* 1) 데이터 추가 : Push (저장할값)
* 2) 데이터 꺼내기 : pop() => 데이터를 꺼내온 후 해당 데이터를 삭제한다.
*/
stack.push("홍길동");
stack.push("일지매");
stack.push("변학도");
stack.push("강감찬");
System.out.println("현재 Stack값들 : " + stack);
String data = stack.pop();
System.out.println("꺼내온 데이터 : " + data);
System.out.println("꺼내온 데이터 : " + stack.pop());
System.out.println("현재 stack 값들 : " + stack);
stack.push("성춘향");
System.out.println("현재 stack값들 : " + stack);
System.err.println("꺼내온 데이터 : " + stack.pop());
System.out.println("========================");
결과값
Queue 사용 구문
Queue = 선입선출 (FIFO)의 자료구조
1). 데이터 추가 :offer(저장할값) , 제공하다는 뜻
2). 데이터 꺼내기 : poll() 데이터를 꺼내온후해당 데이터는 삭제된다.
LinkedList<String > queue = new LinkedList<String>();
/*
* Queue 방식으로 동작하게 하기 위한 메서드
* 1) 데이터 추가 : offer(저장할값)
* 2) 데이터 꺼내기 : poll() => 데이터를 꺼내온 후 데이터는 삭제 된다.
*/
queue.offer("홍길동"); //offer 제공하다의 뜻
queue.offer("일지매");
queue.offer("변학도");
queue.offer("강감챤");
System.out.println("현재 queue 값들 : " + queue);
String temp = queue.poll();
System.out.println("꺼내온 데이터 : " + temp);
System.out.println("꺼내온 데이터 : " + queue.poll());
System.out.println("현재 queue 값들 : " + queue);
if(queue.offer("성춘향")) {
System.out.println("신규등록 데이터 : 성춘향");
}
System.out.println("현재 queue 값들 : " + queue);
System.out.println("꺼내온 데이터 : " + queue.poll());
}
}
결과 값
ArrayList
장점
* 데이터 크기가 정해져있을 경우 메모리 관리가 편하다
* ArrayList와 Vector 같이 배열을 이요한 자료구조는 데이터를 읽어오고 저장할떄는 효율적.
단점
* 중간에 값을 넣거나 삭제하기가 힘들다는 단점이있다.
* index에 위치한 하나의 데이터(element)를 삭제하더라도 해당 index에는 빈공간으로 계속 남는다.
llinkedlist
장점
* 값들이 노드에 저장되어서 데이터 추가 삭제시 퍼포먼스가 작다.
* 데이터가 많아지면 ArrayList보다 낮다.
* 중간 값을 넣거나 삭제할떄는 편하다
단점
* 데이터 추가 삭제가 자주일어나면 안좋은 단점이있다.
* 마지막 값을 가져올떄 앞에서부터 찾아야하는 단점이있다.
'자바 객체 지향 프로그래밍' 카테고리의 다른 글
24-01-22 / Hash Set 함수 T05HashSetTest (1) | 2024.01.24 |
---|---|
Ex)T04ListSortTest Comparable , Comparator 차이 (0) | 2024.01.20 |
[Collections.Sort] , [Shuffle] 사용법 + static 정리 Ex) TO03ListSortTest (0) | 2024.01.20 |
ArrayList [add , size , get , temp , remove ] 사용방법 Ex) T01 ArrayListTest (0) | 2024.01.19 |
24-01-19 객체 지향 프로그램 첫 교육 내용 (0) | 2024.01.19 |