본문 바로가기

java

(25)
몇 가지 자바 원시 타입의 이름을 지정하고 이 타입이 JVM에서 어떻게 처리되는지 설명 - boolean, int, double 같은 각각의 기본 타입은 원시(primitive)타입이라고 알려져 있다. - JVM에서 객체와 다른 방식으로 다룬다. 왜냐하면 원시 타입은 NULL이 될 수 없기 때문 - int와 long floaf와 double을 구분할수 있어야 한다. long은 L float는 F, double은 D 로 정의 한다. 원시 타입의 종류와 크기 타입 크기boolean 1short 16 int 32 long 64 float 32 double 64 char 16 - char 타입이 unsighed 이고 char 값의 범위는 유니코드 값이므로 0에서 65,535 까지다. - 원시 타입을 정의할 때 값이 할당되지 않았다면 그 변수는 기본적으로 기본값이 지정된다. 상위 개념 타입으로 암시..
빌더 패턴은 얼마나 유용한가? - 필드가 많은 객체를 생성할 경우 생성자를 이용하면 다루기도 어렵고 헷갈릿 수 있다,private final Animal animal; private final String petName; private final String ownerName; private final String address; private final String telephone; private final Date dateOfBirth; private final String emailAddress; - 유효한 Pet 객체를 만들려면 필요한 모든 필드와 조합할 수 있는 옵션 필드를 포함하도록 많은 매개변수를 갖는 생성자가 최소한 4개는 필요하다. - 이러한 문제를 해결하는 한 가지 방법은 생성자를 사용하지 않는 것. - 필드에서 ..
Map - 맵은 해시라고도 하며 배열이나 사전(dictionary)과 관련 잇는 키-값 형태의 저장소. - 맵을 구현할 때는 Map 인터페이스를 사용한다. - List 인터페이솨 달리 Collection 인터페이스를 구현하지 않는다는 차이가 있다, - 맵의 특징 중 하나는 키 값은 트리 상에서 한 번만 나타난다는 것. 맵에서 키를 덮어 쓰는 예 - HashMap 클래스는 해시 테이블을 자바로 구현한 것으로, 클래스 구현에는 키-값 쌍을 나타내는 Entry라는 내부 클래스가 있다. - 원소들은 Entry 객체의 배열로 저장할 수도 있고 배열 대신 Entry 객체의 리스트로 저장할 수도 있다. - 이렇게 저장된 원소의 특정 키 인스턴스의 값은 테이블의 어디에 해당 값이 있는지 정의 - Object 클래스에 정의된 ..
이진 탐색 트리 트리란? - 트리는 비선형 자료구조 중에서 자료들 간에 계층관계를 가진 계층형 자료구조다. - 트리를 구성하는 원소를 노드라고 하고 노드를 연견하는 선을 간선(edeg)이라 한다. - A에는 12개의 노드가 있다. - 트리 시작을 루트노드라 하고 레벨 0이 된다. - 같은 부모의 자식 노드들은 서로 형제노드 (Sibling Node)가 된다. - 자식노드들은 각각 독립하여 새로운 트리를 구성할 수 있으므로 각 노드는 자식노드 수만큼의 서브트리를 갖는다. - 한 노드가 가지는 서브 트리의 수, 즉 자식노드의 수를 그 노드의 차수(degree)라 한다. - 차수가 0인 노드 즉 자식이 없는 노드를 리프 노드(Leaf Node) 또는 단말 노드라 한다. - 여러 트리들의 집합을 포리스트라고 한다. 이진 탐색 ..
Deque(Double-ended Queue) 데큐는 큐의 양쪽 끝에서 삽입과 삭제가 모두 발생할 수 있는 큐로서 스택의 설질과 큐의 성질 모두 가지고 있는 자료조 - 덱의 insertFront() 연산과 deleteFront()연산은 front를 스택에 top으로 생각했을 때 스택의 push()연산과, pop()연산과 같다. - 덱의 insertRear() 연산과deleteRear()연산은 rear를 스택에 top으로 각했을때 스택의 push()연산과, pop()연산과 같다. - 덱의 insertRear()연산과 deleteFront()연산은 일반 큐의 enQueue()연산, deQueue()연산과 같다. 연산 수행에 대한 덱의 상태 public class DQNode { char data; DQNode rlink; DQNode llink; }pu..
연결큐 순차 자료구조 방식에는 몇가지 문제가 있다. - 사용 크기가 제한되어 있어서 큐의 길이를 마음대로 변경할 수 없다. - 원소가 없을 때에도 항상 처음 크기를 유지하고 있어야 하므로 메모리도 낭비 된다. 연결큐의 알고리즘 1. 공백 연결 큐 생성createLinkedQueue() fornt
원형 큐 선형 큐의 문제점 - rear가 배열의 마지막 위치에 있을때 앞에 빈자리가 있는 경우에도 포화 상태로 인식하고 삽입 연산을 하지 않는다. 큐의 빈자리를 사용하려면 앞으로 이동시켜 위치를 조정시켜야 하는데 복잡하여 큐의 효율성을 떨어뜨린다. 이런 문제를 해결하기 위해 원형 큐(Circular Queue)를 사용한다. 초기 공백 상태일때는 front와 rear 값이 0이 되고, 공백 상태와 포화 상태를 쉽게 구분하기 위해서 자리 하나를 항상 비워둠.원형큐의 공백 조건 상태는 front=rear가 된다rear는 앞으로 이동하면서 원소를 삽입하고 front는 rear가 이동한 방향으로 따라가면서 원소를 삭제배열의 인덱스가 n-1 다음에 다시 0이 되어야 하므로 사용할 다음 인덱스를 정하기 위해서 나머지 연산자 ..
Queue는 무엇인가? - Queue는 '선입선출(first-in fisrt out) 자료구조를 구현한 자바 인터페이스이다. - java.util에서 제공 http://www.jroller.com/VelkaVrana/resource/java16collections/queues090524-final.pnghttp://www.jroller.com/velkaVrana/entry/java_1_6_collections_class - Iterable과 Collection의 기능을 가지고 있다는게 Queue의 특징 - Queue의 기능을 활용한 클래스 중 대표적인 클래스로 LinkedList가 있음@Test public void queueInsertion() { Queue queue = new LinkedList(); queue.add("..