전체 글 148

Java) 큐(Queue) & 스택(stack) 처리 구조 이해하기

[자료구조]큐(Queue)란?: FIFO(First In, First Out) 구조: 먼저 들어온 데이터가 먼저 처리되는 구조: 처음에 들어온 데이터가 맨 앞에 위치연산 : enqueue(삽입), dequeue(제거)public void enqueue(E e){ Node newNode = new Node(e); if(top == null){ // top이 null일 때(비어있을 때) top = newNode; // 새 노드를 첫 번째 노드로 설정 cashNode = newNode; // 첫 번째 노드가 없다는 건 size++; // 처음 데이터가 들어간거임. return; ..

배열 vs 연결 리스트 CRUD 동작 차이(공부 정리)

: 동작 차이로 자료구조를 확인: 코드 흐름을 파악하면서 알고리즘을 머리속으로 생각하는 게 우선!배열 CRUD_ArrayList.java: 코드 잴 밑에서 해석하는 것보다 코드 중간중간에 모르는 부분 : 주석 달아놓는 게 이해하기에 편할 것 같아서 주석 보기!@SuppressWarnings("unchecked")// Iterable를 구현하는 클래스에서 iterator()메서드를 오버라이드하면// 해당 클래스가 Iterable로 동작할 수 있게 된다.public class _ArrayList implements Iterable { private Object[] elementData; private int size; private int arraySize = 10; public _Ar..

Java) Factory Pattern : 유연한 객체 생성 예제

팩토리 패턴(Factory Pattern)이란?: 객체 생성 로직을 캡슐화하여 호출자가 객체의 구체적인 생성 방식이나 클래스에 의존하지 않도록 설계하는 디자인 패턴: 즉, 원하는 형태의 객체 생성 주요 특징 : 객체 생성 캡슐화 : 객체 생성 과정을 한 곳에서 관리하며, 클라이언트는 객체 생성 방식을 몰라도 된다. 유연성 : 새로운 클래스나 객체를 추가하더라도 기존 코드를 수정할 필요가 없다. 결합도 감소 : 클라이언트 코드와 객체 생성 로직 간의 결합도를 줄여 코드의 유지보수를 쉽게 만든다. 팩토리 패턴의 구성 요소 :  Product(제품) : 생성되는 객체의 인터페이스 또는 추상 클래스 ( Animal 인터페이스 ) Concrete Product(구체적인 제품) : Product를 구현한 실제 클래..

Java) Singleton(싱글턴) : 효율적인 객체 관리와 활용

싱글턴 패턴(Singleton Pattern) 이란?: 하나의 클래스에서 단 하나의 인스턴스만 생성되도록 보장하는 디자인 패턴 주요 특징 :  단일 인스턴스 보장 : 클래스의 인스턴스가 하나만 존재하도록 제한 전역 접근 제공 : 애플리케이션의 어디에서나 동일한 인스턴스를 사용할 수 있다. Lazy Initialization : 인스턴스가 필요할 때 처음으로 생성되며, 이후에는 동일한 인스턴스를 반환(즉, 계속해서 객체를 생성하지 않는다.) 싱글턴 패턴 구현 방식 :  Private Constructor : 외부에서 인스턴스를 생성하지 못하도록 생성자를 private으로 선언 Static Instance : 클래스의 유일한 인스턴스를 static으로 선언하여 관리Static Method : 인스턴스를 반환..

Java) 컬렉션 프레임워크 : HashMap 활용 예제

HashMap이란?: 컬렉션 프레임워크에서 제공하는 데이터 구조로, 키(key)와 값(value)의 쌍으로 데이터를 저장하는 클래스: web으로 가면 이게 Json이 된다. 특징 : 1. 키-값(Key-Value) 구조 : 데이터를 키와 값의 쌍으로 저장하며, 각 키는 고유(unique)해야 한다. 값은 중복 허용2. 해싱(Hashing) : 내부적으로 데이터를 해싱(Hashing) 기법을 통해 저장하여 효율적인 검색 및 삽입 성능을 제공3. 순서 없음 : 데이터는 입력 순서와 관계없이 저장된다.4. NULL 허용 : : 키는 최대 하나의 null 값을 허용: 값은 여러 개의 null 값을 허용 주요 메서드 : 1. put(K key, V value) : 키와 값을 추가 2. get(Object key)..

Java 2025.01.13

Java) 구체 클래스 의존 vs 인터페이스 기반 설계 : 다형성과 확장성의 차이

구체 클래스 의존 설계public class MainClass { public static void main(String[] args) { NameCard card = new NameCard("홍길동", "123-4567", "yas@naver.com"); card.setPrintNameCard( new PrintNameCard()); card.print(); card.setPrintNamePhoneCard(new PrintNamePhoneCard()); card.printTwo(); }}: 프로그램의 진입점으로, nameCard 객체를 생성하고 출력 방식을 설정하여 실행public class NameCard { String ..

Java 2025.01.11

Java) List 활용: ArrayList 기본 CRUD 예제

컬렉션(Collection)이란?: 데이터를 모아서 관리하는 자바의 인터페이스 및 클래스 집합: 데이터를 수집(Collection)하고, 효율적으로 저장, 검색, 수정, 삭제할 수 있도록 도와준다.: 컬렉션은 크게 3가지로 나뉜다.1. List : 순서가 있는 데이터 관리(중복 허용)2. Set : 중복을 허용하지 않는 데이터 관리3. Map : 키-값(Key - Value) 쌍으로 데이터 관리ArrayList란?: Java의 List 인터페이스를 구현한 클래스 중 하나 특징:순서 유지 : 데이터가 삽입된 순서를 유지한다.동적 크기 : 배열과 달리, 크기를 자동으로 조정한다. (데이터 추가 시 공간 부족 문제 해결)중복 허용 : 같은 값의 데이터를 여러 번 저장할 수 있다.인덱스 접근 : 배열처럼 인덱스..

Java 2025.01.11

Java) 제네릭(Generic)과 BoxMap 클래스 활용 예제

제네릭(Generic)이란?: Generic은 Java에서 클래스나 메서드에서 사용할 데이터 타입을 동적으로 정의할 수 있게 해주는 기능이다.: 타입 안정성과 코드 재사용성을 높이기 위해 사용: 래퍼 클래스(Wrapper Class)를 사용해야 하며, 기본 데이터 타입(Primitive Type)은 직접 사용할 수 없다. 특징 : 1. 타입 안정성 제공 : 컴파일 단계에서 타입 체크를 수행하여 잘못된 타입의 데이터가 사용되지 않도록 방지: 런타임 오류 대신 컴파일 오류를 제공하므로 디버깅이 용이하다. 2. 코드 재사용성 증가: 다양한 데이터 타입에 대해 하나의 클래스나 메서드로 작업할 수 있다. 3. 가독성 향상: 명시적으로 타입을 선언하므로 코드 이해가 더 쉬워진다.단일 데이터 타입 예제public c..

Java 2025.01.11

Java) static 키워드의 이해와 활용 예제

static 키워드란?: static은 정적을 의미하며, 클래스 로딩 시 메모리에 올라가며 프로그램이 종료될 때까지 존재한다. 특징 :    공유 : 클래스의 모든 객체가 동일한 static 변수와 메서드를 공유한다.    인스턴스 생성 없이 접근 가능 : 클래스 이름으로 직접 호출할 수 있다.static 메서드 접근 방법public class MainClass { public static void main(String[] args) { MyClass.staticNumber = 10; // 객체 생성 없이 사용 가능 MyClass.static_method(); }}class MyClass{ int number; public static int staticNumbe..

Java 2025.01.09