전체 글(89)
-
순회2 - 향상된 for문
Iterable과 향상된 for문(Enhanced For Loop)Iterable, Iterator를 사용하면 또 하나의 큰 장점을 얻을 수 있다. 다음 코드를 보자. System.out.println("for - each 사용"); for(int value : myArray){ System.out.println("value = " + value); } 실행 결과for - each 사용value = 1value = 2value = 3value = 4 for-each문으로 불리는 향상된 for문은 자료 구조를 순회하는 것이 목적이다.자바는 Iterable 인터페이스를 구현한 객체에 대해서 향상된 for문을 사용할 수 있게 해준다.for(int value : my..
2024.06.21 -
순회1 - 직접 구현하는 Iterable, Iterator
순회라는 단어는 여러 곳을 돌아다닌다는 뜻이다.자료 구조에 순회는 자료 구조에 들어있는 데이터를 차례대로 접근해서 처리하는 것을 순회라 한다.그런데 다양한 자료 구조가 있고, 각각의 자료 구조마다 데이터를 접근하는 방법이 모두 다르다.예를 들어서 배열 리스트는 index를 size까지 차례로 증가하면서 순회해야 하고, 연결 리스트는 node.next를 사용해서 node의 끝이 null일 때 까지 순회해야 한다. 이렇듯 각 자료 구조의 순회 방법이 서로 다르다. 배열 리스트, 연결 리스트, 해시 셋, 연결 해시 셋, 트리 셋 등 다양한 자료 구조가 있다. 각각의 자료 구조마다 순회하는 방법이 서로 다르기 때문에, 각 자료 구조의 순회 방법을 배워야 한다. 그리고 순회 방법을 배우려면 자료 구조의 내부 구조..
2024.06.21 -
Deque와 Stack, Queue
Deque는 양쪽으로 데이터를 입력하고 출력할 수 있으므로, 스택과 큐의 역할을 모두 수행할 수 있다.Deque를 Stack과 Queue로 사용하기 위한 메서드 이름까지 제공한다. 정리Deque에서는 Stack을 위한 메서드 이름까지 제공한다. 자바의 Stack클래스는 성능이 좋지 않기 때문에 Stack자료 구조가 필요하면 Deque의 ArrayDeque를 이용하자.Deque에서는 Queue를 위한 메서드 이름까지 제공한다. Deque 인터페이스는 Queue 인터페이스의 자식이기 때문에, 단순히 Queue의 기능만 필요하면 Queue 인터페이스를 사용하고, 더 많은 기능이 필요하면 Deque 인터페이스를 사용하자. 그리고 구현체로 성능이 빠른 ArrayDeque를 사용하자.
2024.06.20 -
Deque 자료 구조
"Deque" 는 "Double Ended Queue"의 약자로, 이 이름에서 알수 있듯이, Deque는 양쪽 끝에서 요소를 추가하거나 제거할 수 있다. Deque는 일반적인 큐(Queue)와 스택(Stack)의 기능을 모두 포함하고 있어, 매우 유연한 자료 구조이다.offerFirst() : 앞에 추가한다.offerLast() : 뒤에 추가한다.pollFirst() : 앞에서 꺼낸다.pollLast() : 뒤에서 꺼낸다. Deque의 대표적인 구현체는 ArrayDeque, LinkedList가 있다. package collection.deque;import java.util.ArrayDeque;import java.util.Deque;public class DequeMain { public st..
2024.06.20 -
Stack - 스택 자료 구조
이 블록을 다음과 같이 아래쪽은 막혀 있고, 위쪽만 열려있는 통에 넣는다고 생각해보자. 위쪽만 열려있기 때문에 위쪽으로 블록을 넣고, 위쪽으로 블록을 빼야 한다. 후입선출(LIFO)여기서 가장 마지막에 넣은 3번 블록이 가장 먼저 나오는 것을 후입 선출이라 한다.package collection.stack;import java.util.Stack;public class StackMain { public static void main(String[] args) { Stack stack = new Stack(); stack.push(1); stack.push(2); stack.push(3); System.out.println(stack);..
2024.06.17 -
Map - 컬렉션 프레임워크 - Map 구현체
자바의 Map 인터페이스는 키-값 쌍을 저장하는 자료 구조이다. Map은 인터페이스이기 때문에, 직접 인스턴스를 생성할 수는 없고, 대신 Map 인터페이스를 구현한 여러 클래스를 통해 사용할 수 있다. 대표적으로 HashMap, TreeMap, LinkedHashMap이 있다. Map vs Set그런데 Map을 어디서 많이 본 것 같지 않은가? Map의 키는 중복을 허용하지 않고, 순서를 보장하지 않는다.Map의 키가 바로 Set과 같은 구조이다. 그리고 Map은 모든 것이 Key를 중심으로 동작한다.Values는 단순히 Key 옆에 따라 붙는 것 뿐이다. Key 옆에 Value만 하나 추가해주면 Map이 되는 것이다.Map과 Set은 거의 같다. 단지 옆에 Value를 가지고 있는가 없는가의 차이가 있..
2024.06.17