목차
반응형

⚠ 작성자 본인의 학습을 위한 메서드 정리입니다.
코딩테스트 간 java에서 자주 사용하는 메서드를 정리한 글입니다.
반박, 오탈자 시 님 말이 맞습니다. (알려주시면 감사하겠습니다)
[java] 코딩테스트 대비 java 메소드 정리 (1 / 2)
Table of Contents ⚠ 작성자 본인의 학습을 위한 메소드 정리입니다. java 기준 코딩테스트 간 자주 사용하는 메소드를 정리한 글입니다. 신빙성 있는 글이 아니므로 반박시 님 말이 맞습니다. 메소드
doinitright.tistory.com
Stack(스택) (java.util.Stack)
Stack은 FILO(First In, Last Out), LIFO(Last In, First Out) 방식의 자료구조입니다.
먼저 들어온(push) 원소가 맨 마지막에 제거(pop)되며,
반대로 마지막에 들어오는 원소가 처음으로 제거됩니다.
메서드 설명
구분 | 메소드명 | 호출 방법 | 간략 설명 | 시간복잡도 |
생성자 | Stack() | public Stack<E> | 스택 객체를 생성합니다. | - |
Stack | push | public E push(E item) | 원소를 스택에 넣습니다. | O(1) |
Stack | pop | public E pop() | 스택 꼭대기의 원소를 제거 후 리턴합니다. | O(1) |
Stack | peek | public E peek() | 스택 꼭대기 원소를 리턴합니다. (제거 X) | O(1) |
Stack | empty | public boolean empty() | 해당 스택이 비어있는지 확인합니다. | O(1) |
Stack | search | public int search(Object o) | 스택 꼭대기의 인덱스를 1로 정의하고 해당 원소의 위치를 반환합니다. * 해당 원소가 없으면 -1을 반환합니다. |
O(n) |
Vector (상속) |
clear() | public void clear() | 현 스택을 초기화합니다. | O(1) |
Vector (상속) |
size() | public int size() | 현 스택의 사이즈를 반환합니다. | O(1) |
구현
- 생성자, push, pop, peek
java
닫기import java.util.Stack; public class LearnClassMethod { public static void main(String[] args) { /* Stack */ // 1. 생성자 Stack<String> stack = new Stack<>(); // 2. push stack.push("철수"); stack.push("영희"); stack.push("바둑이"); stack.push("갑돌이"); stack.push("갑순이"); System.out.println(stack); // out : 철수, 영희, 바둑이, 갑돌이, 갑순이 // 3. pop System.out.println(stack.pop()); // out : 갑순이 // 4. peek System.out.println(stack.peek()); // out : 갑돌이 } }
- empty, search, size, clear
java
닫기import java.util.Stack; public class LearnClassMethod { public static void main(String[] args) { Stack<String> stack = new Stack<>(); stack.push("철수"); stack.push("영희"); stack.push("바둑이"); stack.push("갑돌이"); stack.push("갑순이"); System.out.println(stack.pop()); // out : 갑순이 System.out.println(stack.peek()); // out : 갑돌이 // 5. empty System.out.println(stack.empty()); // out : false // 6. search System.out.println(stack.search("철수")); // out : 4 (꼭대기에서 4번째) System.out.println(stack.search("민철")); // out : -1 (스택에 해당 원소 없음) // 7. size (extends Vector) System.out.println(stack.size()); // out : 4 (철수, 영희, 바둑이, 갑돌이) // 8. clear (extends Vector) stack.clear(); System.out.println(stack.empty()); // out : true } }
Queue(큐) (java.util.Queue, java.util.LinkedList)
Queue는 FIFO(First In, First Out)
* 먼저 들어온(push) 원소가 맨 처음에 제거되는 방식
* 큐의 각 끝쪽이 front(앞), rear(뒤)로 지정되어 front는 삭제 연산, rear는 삽입 연산 수행
주로 컴퓨터 버퍼 및 스레드 처리에 활용됩니다.
메서드 설명
구분 | 메소드명 | 호출 방법 | 간략 설명 | 시간복잡도 |
생성자 | LinkedList() | public Queue<E> | 큐 객체를 생성합니다. | - |
Queue | add | boolean add(E e) | 원소를 큐의 맨 뒤로 넣습니다. * 삽입 실패 시 IllegalStateException 리턴 |
O(1) |
Queue | offer | boolean offer(E e) | 원소를 큐의 맨 뒤로 넣습니다. | O(1) |
Queue | poll | E poll() | 큐 맨앞에 있는 원소를 제거 후 리턴합니다. * 제거할 값이 없으면 null 리턴 |
O(1) |
Queue | peek | E peek() | 큐 맨앞에 있는 원소를 리턴합니다. (제거 x) * 리턴할 값이 없으면 null 리턴 |
O(1) |
Collections (상속) |
contains | boolean contains(E e) | 큐 안에 해당 원소가 있는지 확인합니다. | O(n) |
Collections (상속) |
isEmpty | boolean isEmpty() | 해당 큐가 비어있는지 확인합니다. | O(1) |
Collections (상속) |
clear() | public void clear() | 현 큐를 초기화합니다. | O(1) |
Collections (상속) |
size() | public int size() | 현 큐의 사이즈를 반환합니다. | O(1) |
구현
- 생성자, add, offer
java
닫기import java.util.LinkedList; import java.util.Queue; public class LearnClassMethod { public static void main(String[] args) { /* Queue */ // 1. 생성자 Queue<String> queue = new LinkedList<>(); // 2. add, offer queue.add("철수"); queue.add("영희"); queue.offer("바둑이"); System.out.println(queue); // out : 철수, 영희, 바둑이 } }
- poll, peak, contains
java
닫기import java.util.LinkedList; import java.util.Queue; public class LearnClassMethod { public static void main(String[] args) { /* Queue */ Queue<String> queue = new LinkedList<>(); queue.add("철수"); queue.add("영희"); queue.offer("바둑이"); // 3. poll, peak, contains System.out.println(queue.poll()); // out : 철수 System.out.println(queue.peek()); // out : 영희 System.out.println(queue.contains("바둑이")); // out : true } }
- size, clear, isEmpty
java
닫기import java.util.LinkedList; import java.util.Queue; public class LearnClassMethod { public static void main(String[] args) { /* Queue */ Queue<String> queue = new LinkedList<>(); queue.add("철수"); queue.add("영희"); queue.offer("바둑이"); queue.poll() // 원소 "철수" 제거 // 4. size, clear, isEmpty System.out.println(queue.size()); // out : 2 queue.clear(); System.out.println(queue.isEmpty()); // out : true } }
Priority Queue(우선순위 큐) (java.util.PriorityQueue)
기존 Queue가 FIFO(First In, First Out) 방식을 채택한다면
Priority Queue는 먼저 들어온 데이터 순서대로 나가는 것이 아닌,
우선순위를 내부에서 결정하고 해당 순위에 따라 데이터가 나가는 구조입니다.
- 내부 요소가 힙으로 구성되어 이진트리 구조로 이루어져 있습니다. (Binary Tree)
- 데이터를 삽입할 때 우선순위를 기준으로 최대 힙 / 최소 힙을 구성합니다.
- 시간복잡도 O(NLogN)
- 데이터를 삽입할 때는 독립적으로 삽입되지만, 꺼낼 때는 우선순위에 의해 배출됩니다.
- 데이터를 꺼낼 시 루트 노드를 얻어 내며 적절한 자리를 찾아서 내부 요소를 옮깁니다.
메서드 설명
구분 | 메소드명 | 호출 방법 | 간략 설명 | 시간복잡도 |
생성자 | PriortyQueue<>() |
public PriorityQueue<E> | 우선순위 큐 객체를 생성합니다. | - |
Queue | add | boolean add(E e) | 원소를 큐의 맨 뒤로 넣습니다. * 삽입 실패 시 IllegalStateException 리턴 |
O(1) |
Queue | offer | boolean offer(E e) | 원소를 큐의 맨 뒤로 넣습니다. | O(1) |
Queue | poll | E poll() | 큐 맨앞에 있는 원소를 제거 후 리턴합니다. * 제거할 값이 없으면 null 리턴 |
O(1) |
Queue | peek | E peek() | 큐 맨앞에 있는 원소를 리턴합니다. (제거 x) * 리턴할 값이 없으면 null 리턴 |
O(1) |
Collections (상속) |
contains | boolean contains(E e) | 큐 안에 해당 원소가 있는지 확인합니다. | O(n) |
Collections (상속) |
isEmpty | boolean isEmpty() | 해당 큐가 비어있는지 확인합니다. | O(1) |
Collections (상속) |
clear() | public void clear() | 현 큐를 초기화합니다. | O(1) |
Collections (상속) |
size() | public int size() | 현 큐의 사이즈를 반환합니다. | O(1) |
구현
- 생성자, add, offer
shell
닫기import java.util.PriorityQueue; import java.util.Queue; public class LearnClassMethod { public static void main(String[] args) { /* Queue */ // 1. 생성자 (우선순위 낮은 순) Queue<String> queue = new PriorityQueue<>(); // 2. add, offer queue.add("철수"); queue.add("영희"); queue.offer("바둑이"); System.out.println(queue); // out : [바둑이, 영희, 철수] // 1. 생성자 (우선순위 높은 순) Queue<String> queue2 = new PriorityQueue<>(Comparator.reverseOrder()); // 2. add, offer queue2.add("철수"); queue2.add("영희"); queue2.offer("바둑이"); System.out.println(queue2); // out : [철수, 바둑이, 영희] } }
- poll, peak, contains
shell
닫기import java.util.LinkedList; import java.util.Queue; public class LearnClassMethod { public static void main(String[] args) { /* Queue */ Queue<String> queue = new PriorityQueue<>(); queue.add("철수"); queue.add("영희"); queue.offer("바둑이"); // 3. poll, peek, contains System.out.println(queue.poll()); // out : 바둑이 System.out.println(queue.peek()); // out : 영희 System.out.println(queue.contains("철수")); // out : true } }
반응형
'DEV > Java' 카테고리의 다른 글
[java] Comparable 활용 Collections.sort() 정렬 방식 정의 (0) | 2023.10.12 |
---|---|
[java] 중첩 클래스(Nested Class)의 이해와 구현 (1) | 2023.10.09 |
[java 기초] 기타 제어자(static, final, abstract)의 이해와 구현 (0) | 2023.10.05 |
[java] 스트림을 사용하자(1 / 3) - 스트림의 이해와 생성 (0) | 2023.09.21 |
[java 기초] Iterator 활용 ConcurrentModificationException 예외 해결 (0) | 2023.09.01 |