반응형
⚠ 작성자 본인의 학습을 위한 메서드 정리입니다.
코딩테스트 간 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
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
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
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
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
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
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
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 |