큐(Queue)란 무엇일까? 이쯤되니 자료구조는 우리 생활에 꾀나 밀접한 체계라는 것을 알 수 있습니다. 우리가 놀이동산에 가거나 화장실에서 줄을 설 때, 자연스럽게 내 차례를 기다립니다. 차례대로 줄을 선다는 것은 먼저 온 사람은 먼저 들어 갈 수 있다라는 사회적 약속이기 때문이죠 큐(Queue)는 이와 같은 자료구조입니다. 즉, 큐(Queue)는 선입선출(LILO: Last In Last Out)의 특징을 가지고 있습니다. 코드를 통해 알아보도록 하겠습니다. Queue queue = new LinkedList(); //int형 queue를 선언합니다. queue.add(1); // queue에 값 1 추가 queue.add(2); // queue에 값 2 추가 queue.add(3); // queue..
스택(Stack)이란 무엇일까? 스택(Stack)이란 위에 사진과 같이 겹겹이 위로 쌓여진 형태를 뜻한다. 차곡차곡 쌓아놓은 물건을 안전하게 사용하는 방법은 위에서부터 물건을 다시 꺼내야한다. Stack은 이러한 상황에 알맞게 활용할 수 있는 자료구조다. 즉, LIFO(Last In First Out) 혹은 FILO(First In Last Out)의 형태를 가지고 있는 자료구조입니다. 스택(Stack)의 특징 LIFO(Last In First Out) stack은 push로 데이터를 집어 넣고, pop으로 데이터를 꺼냅니다. Stack stack = new Stack(); //Integer형 스택 선언한다고 가정합니다. stack.push(1); stack.push(2); stack.push(3); s..
Map Map 인터페이스는 키(key)와 값(value)로 구성된 객체를 저장하는 구조를 가지고 있다. Entry 객체는 키(key)와 값(value)을 각각 키(key)객체와 값(value)객체로 저장한다. Map 인터페이스는 이들을 포함하고 있다. Map은 키는 중복 저장할 수 없지만, 값은 중복 저장이 가능하며 기존에 저장된 키와 동일한 키로 값을 저장하면, 기존의 값이 새로운 값으로 대치된다. List는 인덱스를 기준으로 관리되는 반면 Map은 키(key)를 기준으로 객체를 관리하기 때문에 키(key)를 매개값으로 갖는 메서드가 많다. HashMap HashMap는 키와 값으로 구성된 Entry 객체를 저장하며 해시 함수를 통해 키와 값이 결정되기 때문에 그 위치를 알 수 없고 삽입되는 순서와 위..
Set은 일반적으로 집합을 의미하는데, 집합은 중복된 값을 허용하지 않는다. Set은 요소의 중복을 허용하지 않고, 저장 순서를 유지하지 않는 컬렉션이다. 대표적인 클래스는 HashSet, TreeSet이 있다. HashSet HashSet은 중복을 허용하지 않고, 저장 순서를 유지하지 않는 특징을 가지고 있다. 그렇다면 해당 값이 중복된 값인지 어떻게 판단할까? add(Object o)를 통해 객체를 저장하고자 할 때 저장하고자 하는 객체의 해시코드를 hashcode()메서드를 통해 얻는다. Set이 저장하고 있는 모든 객체들의 해시코드를 hashcode()메서드로 얻는다. 저장하고자 하는 객체의 해시코드와, Set에 이미 저장되어져 있던 객체들의 해시코드를 비교하여, 같은 해시코드가 있는지 검사한다...