일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 패스트캠퍼스후기
- 알버트
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지 Online.
- 한번에끝내는Java/Spring웹개발마스터초격차패키지
- 직장인자기계발
- SKT
- 한번에 끝내는 Java/Spring 웹 개발 마스터 초격차 패키지
- AI
- 직장인인강
- 패스트캠퍼스
- 패캠챌린지
- R
- albert
- Today
- Total
제주 탈출 일지
패스트캠퍼스 챌린지 24일차 본문
어제 게으름을 만회하느라, 오늘 너무 영향이 가서 적당히 열심히 하겠읍니다.
레스고
05. Stack 구현하기
맨 마지막 위치에서만 자료를 추가, 삭제, 꺼냄
이전 ArrayList 활용하여 구현.
MyArrayStack 클래스
package ch05;
import ch03.MyArray;
public class MyArrayStack {
MyArray arrayStack;
int top;
public MyArrayStack() {
top = 0;
arrayStack = new MyArray();
}
public MyArrayStack(int size) {
top = 0;
arrayStack = new MyArray(size);
}
public void push(int data) {
if( isFull() ) {
System.out.println("stack is Full");
return;
}
arrayStack.addElement(data);
top++;
}
public int pop() {
if( isEmpty() ) {
System.out.println("stack is empty");
return MyArray.ERROR_NUM;
}
return arrayStack.removeElement(--top);
}
public int peek() {
if( isEmpty() ) {
System.out.println("stack is empty");
return MyArray.ERROR_NUM;
}
return arrayStack.getElement(--top);
}
public boolean isEmpty() {
if( top == 0) {
return true;
}
else return false;
}
public boolean isFull() {
if ( top == arrayStack.ARRAY_SIZE) {
return true;
}
else return false;
}
public void printAll() {
arrayStack.printAll();
}
}
MyArrayStackTest 클래스
package ch05;
public class MyArrayStackTest {
public static void main(String[] args) {
MyArrayStack stack = new MyArrayStack(3);
stack.push(10);
stack.push(20);
stack.push(30);
stack.push(40);
stack.printAll();
System.out.println(stack.pop());
System.out.println(stack.pop());
System.out.println(stack.peek());
}
}
저번시간에 대충 구현하다 말아서 부랴부랴 getElement 메소드와 printAll 메소드를 구현했다.
내 맘대로 대충 구현한거라 정확한지는 모르겠다;;
결과는 나오니 뭐,,,
06. 큐(Queue) 구현하기
맨 앞(front) 에서 자료를 꺼내거나 삭제하고, 맨 뒤(rear)에서 자료를 추가 함
FIFO
이전에 만든 연결리스트를 활용함;;;;
LinkedList Github 소스를 copy & paste 하도록 하겠다.
MyLinkedQueue 클래스
package ch06;
import ch04.MyLinkedList;
import ch04.MyListNode;
interface Queue {
public void enQueue(String data);
public String deQueue();
public void printQueue();
}
public class MyLinkedQueue extends MyLinkedList implements Queue {
MyListNode front;
MyListNode rear;
@Override
public void enQueue(String data) {
// TODO Auto-generated method stub
MyListNode newNode;
if( isEmpty() ) {
newNode = addElement(data);
front = newNode;
rear = newNode;
}
else {
newNode = addElement(data);
rear = newNode;
}
System.out.println(newNode.getData() + " added");
}
@Override
public String deQueue() {
// TODO Auto-generated method stub
if( isEmpty() ) {
return null;
}
String data = front.getData();
front = front.next;
if(front == null) {
rear = null;
}
return data;
}
@Override
public void printQueue() {
printAll();
}
}
MyListQueueTest 클래스
package ch06;
public class MyListQueueTest {
public static void main(String[] args) {
MyLinkedQueue listQueue = new MyLinkedQueue();
listQueue.enQueue("A");
listQueue.enQueue("B");
listQueue.enQueue("C");
listQueue.printAll();
System.out.println(listQueue.deQueue());
System.out.println(listQueue.deQueue());
}
}
LinkedList를 상속 + Queue 인터페이스를 상속하여 구현.
07. 무엇이든 담을 수 있는 제네릭(Generic) 프로그래밍
제네릭 자료형 정의
클래스의 자료형을 특정하지 않고 추후 해당 클래스를 사용할 때 지정 할 수 있도록 선언
(이거 완전 ArrayList 아니냐??!? C++에서 많이 써봤따. 개편함 ㄹㅇ)
컬렉션 프레임워크에서 많이 사용되고 있음
<> 다이아몬드 연산자
package ch07;
public class GenericPrinter<T> {
private T material ;
public T getMaterial() {
return material;
}
public void setMaterial(T material) {
this.material = material;
}
public String toString() {
return material.toString();
}
}
package ch07;
public class GenericPrinterTest {
public static void main(String[] args) {
Powder powder = new Powder();
GenericPrinter<Powder> powderPrinter = new GenericPrinter<Powder>();
powderPrinter.setMaterial(powder);
Powder p = powderPrinter.getMaterial();
System.out.println(powderPrinter.toString());
}
}
T는 다른 문자로 대체할 수도 있다. (V : Value, K : Key. 등등... )
컴파일러가 컴파일 당시 T를 <> 내부값으로 바꿔준다.
<>를 안쓰면 Object 타입으로 생성된다. -> 나중에 메소드를 사용하려면 명시적 다운캐스팅을 해야됨.
(굳이?)
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성되었습니다.
패스트캠퍼스 [직장인 실무교육]
프로그래밍, 영상편집, UX/UI, 마케팅, 데이터 분석, 엑셀강의, The RED, 국비지원, 기업교육, 서비스 제공.
fastcampus.co.kr
'패스트캠퍼스 챌린지!' 카테고리의 다른 글
패스트캠퍼스 챌린지 26일차 (0) | 2021.10.01 |
---|---|
패스트캠퍼스 챌린지 25일차 (0) | 2021.09.30 |
패스트캠퍼스 챌린지 23일차 (0) | 2021.09.28 |
패스트캠퍼스 챌린지 22일차 (0) | 2021.09.27 |
패스트캠퍼스 챌린지 21일차 (0) | 2021.09.26 |