전체 글 106

[Java 연습문제] Singleton과 Prototype 리포지토리 *

Singleton과 Prototpye 리포지토리GoF 디자인 패턴 중, 생성 패턴에 속하는 ProtoType 패턴은 코드를 클래스들에 의존시키지 않고 기존 객체들을 복사할 수 있도록 하는 패턴입니다.객체가 있고, 그 객체의 정확한 복사본을 만들고 싶을 경우, 일반적인 방식에서는 같은 클래스의 새 객채를 생성한 다음 원본 객체의 모든 필드를 새 객체로 복사해야 합니다. 하지만 이런 경우, 몇 가지 위험성과 불편한 점이 있습니다.   1. 원본 객체의 필드 중 일부는 private으로 선언되어 있어, 외부에서 볼 수 없다.   2. 해당 원본 객체의 클래스 소스코드를 알아야 할 필요가 있다.프로토타입 패턴은 실제로 복제되는 객체들에 복제 프로세스를 위임합니다. 복제를 지원하는 객체를 프로토타입이라고 하며, ..

[Java 연습문제] Iterable과 Comparable * - Book 예제

"book.csv"을 읽어서 Book 객체로 변환한 후, 이를 LinkedList에 저장한다. Books 클래스는 Iterator 패턴을 통해 for-each문으로 쉽게 순회할 수 있다. 코드 book.csv더보기더보기더보기더보기더보기1|이노베이터|창의적인 삶으로 나아간 천재들의 비밀|월터 아이작슨|innovator.jpg|42000|초특급 베스트셀러 『스티브 잡스』에 이은 월터 아이작슨의 놀라운 역작!\r\n최초의 컴퓨터에서 트위터와 페이스북까지,\r\n디지털 혁명을 선도한 창의적인 천재들의 이야기\r\n\r\n국내에서만 70만 부가 판매된 세계적인 베스트셀러 『스티브 잡스』의 저자 월터 아이작슨이 10년을 준비한 역작, 『이노베이터』가 돌아왔다. 세상을 바꾸는 혁명을 일궈낸 창의적인 천재들의 이야기를..

[자료구조] Binary Search Tree (BST, 이진 탐색 트리)

Binary Search Tree (BST, 이진 탐색 트리)모든 node의 key는 유일한 key를 가진다.왼쪽 서브 트리 key들은 root의 key보다 작다.오른쪽 서브 트리의 key들은 root의 key보다 크다.왼쪽, 오른쪽 서브 트리 모두 binary search tree다.코드/* binary search tree */import java.util.*;class Node { int key; Node right; Node left; public Node() {} public Node(int key) { this.key = key; left = right = null; }}public class BinaryTree implements It..

[자료구조] Hash Table (해시 테이블)

Hash Table  Hash를 이용해 Key와 Value 쌍으로 이루어진 데이터를 저장하는 전통적 자료구조.Equality Selection 할 때, 가장 효율적인 자료구조.Java에서는 주로 Hash Map을 사용할 것. 코드/* HashTable.java */import java.util.Iterator;@SuppressWarnings("unchecked")public class HashTable implements Iterable>{ private Entry[] table; private int size; public static class Entry { final K key; // '키'는 유일해야 하기 때문에 V value; public E..

[자료구조] Queue(큐) with Java

Queue(큐)FIFO (First In First Out) 형태를 가지는 자료구조.데이터가 입력되는 순서대로 처리되어야 하는 상황에서 사용. 코드/* LinkedList로 구현한 Queue */import java.util.LinkedList;// Queue ADTpublic interface Queue { public void enqueue(E e); public E dequeue(); public int size();}class LinkedListQueue implements Queue { LinkedList queue; public LinkedListQueue() { this.queue = new LinkedList(); } public void ..

[자료구조] LinkedList

LinkedList Node라고 불리는 각 요소가 데이터와 포인터를 사용하여 한 줄로 연결되는 자료구조.코드/* List.java : list ADT */public interface List extends Iterable { void add(E item); E get(int index); int size(); void remove(int index); boolean isEmpty(); void clear();}/* SinglyLinkedList.java */import java.util.Iterator;public class SinglyLinkedList implements List { public static class Node { private E ..

[Java] 14. Collections Framework

Chapter 1: Collection FrameworkCollection 개요Java Collections FrameworkCollection 클래스의 저장 구조Java Collections Framework 구성Collection 인터페이스Collection 인터페이스의 주요 메소드Chapter 2: Iterator, Comparable, ComparatorIterable과 IteratorComparableComparatorChapter 3: ListList InterfaceArrayListLinkedListStackQueueChapter 4: MapHashMapHashTablePropertiesChapter 5: Collections 클래스Collections 클래스Collection 동기화Unmo..

Java 2024.09.02

[Java] ArrayList

ArrayList연속적인 데이터의 리스트 (데이터는 연속적으로 들어 있어야 하고, 중간에 빈 공간이 있어서는 안됨)내부적으로 Object[] 배열을 이용하여 요소를 저장index를 사용하여 요소에 빠르게 접근일반적인 배열과는 달리, 가변적으로 공간을 늘이거나 줄인다.데이터가 중간에 삽입할 경우, 빈 공간이 생기지 않도록 요소들의 위치를 재정렬 해야함.read가 빠르지만, insert/delete가 느리다. (삽입, 삭제가 적고, 작은 데이터를 다룰 때 사용) 코드(1) List.java : List라면 갖춰야 할 ADT(객체에 대한 설계도)를 Interface로 구현. (Java에서 Interface를 ADT로 사용함)(2) ArrayList.java : 배열을 이용한 ArrayList 구현. (1) L..

[자료구조] 스택(Stack) with Java

Stack(스택) 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 및 Last in First Out(LIFO) 구조의 자료구조. Java에서 자료구조(알고리즘)를 만들 때, 해당 객체에 대한 설계도(ADT, Abstract Data Type)를 Interface로 구현한다.  코드(1) Stackable.java : Stack이라면 갖춰야 할 ADT(객체에 대한 설계도)를 Interface로 구현. (Java에서 Interface를 ADT로 사용함)(2) ArrayListStack.java : ArrayList를 이용한 Stack 구현. (1) Stackable.java/* Stackable.java */public interface Stackable { // access: isEmpty /..

[Java] 13. Anotation(어노테이션)

Annotation(어노테이션) 프로그램의 소스코드 안에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시켜, 프로그램에 유용한 기능을 포함시키고 정보를 제공할 수 있는 기능.  출처 : https://github.com/gikpreet/class-programming_with_java/blob/master/Module%2013%20Annotation/Module%2013%20Annotation.md class-programming_with_java/Module 13 Annotation/Module 13 Annotation.md at master · gikpreet/class-programming_with_javaContribute to gikpreet/class-programming_with_j..

Java 2024.09.02