JAVA
Stack, Queue 활용
Stack, Queue 활용
2022.04.29이번시간에는 스택과 큐가 실제로 어떻게 활용되는지 예제르 통해서 알아보자. 스택의 활용 예 - 수식계산, 수식괄호검사, 워드프로세서의 undo/redo, 웹브라우저의 뒤로/앞으로 큐의 활용 예 - 최근사용문서, 인쇄작업 대기목록, 버퍼(buffer) [스택의 활용 예] 수식계산의 경우, ((3+2)*8)/2 이러한 계산이 있으면, 이것은 스택을 활용해서 계산된다. 수식괄호 검사는, 수식에서 여는괄호와 닫는괄호의 갯수가 일치하는지 확인할 때 스택을 활용한다. 워드프로세서의 undo/redo (취소, 복구)에도 스택이 사용된다. 그리고 웹 브라우저의 다음으로가기 버튼과 이전으로가기 버튼에도 스택이 사용된다. 현재페이지가 D일 때, 뒤로가기 버튼을 누르면, 또하나의 스택을 만들어서 페이지D를 새로운 스택으로 ..
Stack과 Queue
Stack과 Queue
2022.04.28스택과 큐 (Stack & Queue) - 스택(Stack) : LIFO 구조. 마지막에 저장된 것을 제일 먼저 꺼내게 된다. 스택은, 밑이 막힌 상자처럼 되어있다. Last In First Out 구조이다. 먼저들어간게 제일 마지막에 나오고, 제일 마지막에 넣은게 제일 처음 나온다. 스택에서는 저장하는 것을 push, 추출하는 것을 pop라고 한다. 데이터 1, 2, 3, 4, 5가 있을 때, 이것의 순서를 반대로 뒤집고 싶다면, 스택에 넣었다가 빼면, 5, 4, 3, 2, 1로 나온다. - 큐(Queue) : FIFO구조. 제일 먼저 저장한 것을 제일 먼저 꺼내게 된다. 큐는 위아래가 뚫려있다. 데이터 흐름이 줄서기와 똑같다. First In First Out구조이다. 먼저 들어간게 제일 먼저나오고,..
LinkedList
LinkedList
2022.04.28배열의 장단점 이번시간에는 LinkedList에 대해서 알아 볼 것인데, 그전에 먼저, 배열의 장단점에 대해서 알아보자. 장점 : 배열은 구조가 간단하고 데이터를 읽는 데 걸리는 시간 (접근시간, access time)이 짧다. 배열은 구조가 간단하고, 데이터를 읽는데 걸리는 시간이 짧다. 첫번째 데이터에 접근하는데 걸리는 시간과 마지막 데이터에 접근하는데 걸리는 시간이 같다. 배열은 연속적이다. int배열이라고 봤을 때, 배열의 인덱스 1개당 4byte의 공간을 가지고 있다. 만약에 시작이 100번지면,그다음은 104번지, 108번지 이런식으로 된다. 그러면, 해당 배열의 n번째의 요소를 읽으려면, 배열의 시작주소를 s라고 했을 때, s + (4 * n) 해주면 접근할 수 있을 것이다. 이런식으로 [배..
ArrayList
ArrayList
2022.04.28ArrayList 저번시간에 LIst인터페이스에 대해서 알아보았다. List인터페이스의 특징은, 순서가 있고 중복을 허용한다는 것이다. Lsit인터페이스로 구현한 대표적인 Collection클래스는 ArrayLIst와 LinkedList 가 핵심이다. 그중에 하나인 ArrayList에 대해 알아보자. ArrayList는 기존의 Vector를 개선한 것으로 구현원리와 기능적으로 동일 ArrayList와 달리 Vector는 자체적으로 동기화처리가 되어 있다. List인터페이스를 구현하므로, 저장순서가 유지되고 중복을 허용한다. 데이터의 저장공간으로 배열을 사용한다.(배열기반) ArrayList와 Vector는 거의 같지만, Vector를 개선시킨 것이 ArrayList이다. 가능하면 ArrayList를 사용..
Collection, List, Set, Map
Collection, List, Set, Map
2022.04.27Collection 인터페이스의 메서드 List는 순서를 유지하고, 중복을 허용한다. Set은 순서가 없고, 중복도 허용하지 않는다. 리스트와 완전히 반대다. Map은 순서가 없고, key는 중복을 허용하지 않고, value는 중복을 허용한다. 그리고, List와 Set 인터페이스에서 공통부분을 뽑아서 만든 것이 Collection인터페이스다. 먼저, Collection인터페이스의 메서드다. 추가하는 add()메서드와, 삭제하는 remove()메서드를 가지고 있다. 그리고 전체 삭제를 하는 clear()메서드도 가지고 있다. isEmpty()는 비어있는지 확인하는 것이고, size()는 저장된 객체의 개수를 반환한다. 그리고, contains()는 특정객체를 가지고 있는지 검색및 확인할 때 사용한다. 이..
컬렉션 프레임웍과 핵심 인터페이스
컬렉션 프레임웍과 핵심 인터페이스
2022.04.27컬렉션 프레임웍(collections framework) 컬렉션 (collection) 여러 객체(데이터)를 모아 놓은 것을 의미 프레임웍 (framework) 표준화, 정형화된 체계적인 프로그래밍 방식 라이브러리는 기능만 제공한다. 우리가 가져다가 사용만 하면 된다. 프레임웍이라는 것은, 라이브러리에다가 프로그래밍 방식까지 강제를 한다. 즉, 기능뿐만 아니라 프로그래밍을 어떻게 어떻게 해라! 라는 것까지 정의해 놓은 것이다. 자유도가 떨어진다고 볼 수도 있지만, 정해진대로만 하면 되니까 프로그래밍의 생산성이 올라가는 장점도 있다. 그리고 더 중요한 것은, 유지보수가 쉬워진다. 컬렉션 프레임웍 (collections framework) 컬렉션(다수의 객체)을 다루기 위한 표준화된 프로그래밍 방식 컬렉션을..