Java 44

[Java] 스택 - LinkedList / Deque / Stack

결론부터 말하면 스택을 구현하기 위한 클래스로는Deque > LinkedList > Stack (권장 X) 순으로 좋다! 1. Deque stack = new ArrayDeque(); 클래스: java.util.ArrayDeque상속 구조: Deque 구현체특징:배열 기반이지만 자동으로 크기 조절됨push(), pop(), peek() 사용 가능 (Deque 인터페이스)null 저장 불가Stack보다 훨씬 빠름 (동기화 X, 최신 컬렉션 구조)권장 여부: ✅ 최고의 선택 (성능, 설계 모두 우수)2. LinkedList stack = new LinkedList>();클래스: java.util.LinkedList상속 구조: Deque 구현체특징:addFirst(), removeFirst(), peekFi..

Java 2025.05.01

[Java] 컬렉션(collection) (컨테이너(container))

Setadd("one") : 새로운 자료를 삽입하는 메소드로 성공하면 true, 실패하면 false 반환.size() : 입력된 자료의 개수 반환.contains("four") : "four"가 존재하면 true, 그렇지 않으면 false 반환.remove("four") : "four"라는 자료를 삭제하는 메소드로 삭제에 성공하면 true, 실패하면 false 반환.clear() : 입력된 모든 자료를 삭제. List (ArrayList, LinkedList)add("one") : 새로운 자료를 삽입하는 메소드로 항상 true 반환.add(1, "one") : 위치 1에 "one"이라는 자료를 삽입하는 메소드로 위치 1(두 번째 위치)에 이미 자료가 존재하면 하나씩 뒤로 밀어서 삽입. 자료의 개수를 넘어..

Java 2025.04.29

[Java] Comparator, CompareTo, thenComparing

CompareTo란 정렬할 때 객체끼리 비교하는 방법을 정의하는 함수이다.배열을 Arrays.sort()할 때,int[]나 String[]처럼 기본 타입 외의사용자가 정의한 클래스는 어떤 기준으로 비교할지 알려줘야 하기 때문이다. compareTo Comparator클래스 안에 "implements Comparable" 하고compareTo 작성"Arrays.sort(배열, (a, b) -> {})" 로 정렬 기준 따로 작성클래스 수정 필요클래스 수정 없이 외부에서 기준 설정코드가 클래스에 묶여있음정렬할 때마다 다른 기준을 쉽게 줄 수 있음 compareTo 사용법a.compareTo(b) 반환값 a -1 a가 b보다 앞a == b0 a > b1a가 b보다 뒤 Comparator사용법Arrays.sort..

Java 2025.04.28

[Java] StringBuilder

StringBuilder는 문자열을 다룰 때 성능을 크게 향상시키기 위해 사용된다. 문자열 불변성 문제 해결: Java의 String 클래스는 불변(immutable)이기 때문에 문자열을 생성할 때마다 객체가 새롭게 생성되어, 메모리 사용량이 증가하고 성능이 저하된다. 여기서 문자열의 생성이란, 문자열끼리의 연결도 포함하는데 문자열의 덧셈을 하면 새 문자열이 생성되기 때문이다.메모리 효율성: StringBuilder는 내부적으로 가변 크기의 문자 배열을 사용하므로, 문자열 연결 작업에서 불필요한 객체 생성을 줄입니다.시간 복잡도 개선: String 연결 O(n^2) -> StringBuilder 사용 O(n)사용 사례: 큰 출력, 문자열 연결의 반복, 복잡한 출력 형식 public class Main {..

Java 2025.04.25

[Java] ProcessBuilder

java.lang.ProcessBuilderJava 애플리케이션에서 시스템 명령어나 스크립트를 실행할 수 있게 하는 클래스.다양한 프로세스의 입출력을 관리할 수 있다.1. 시스템 명령어(cmd) 실행2. 프로세스 실행환경 설정3. 외부 프로세스의 표준 입력 / 출력 / 오류 처리4. 비동기적인 프로세스 실행 및 종료 대기* @Async를 붙이면 비동기 처리 가능 public static void main(String[] args) throws IOException, InterruptedException { ProcessBuilder builder = new ProcessBuilder(); builder.command("cmd.exe", "/c", ".\\test.bat); //운영체제가 윈도..

Java 2025.03.25

[Spring] NoArgsConstructor / AllArgsConstructor

@NoArgsConstructor@AllArgsConstructor위의 두 가지의 어노테이션은 Lombok의 어노테이션이다. Lombok은 불필요한 코드와 작업을 줄여주는 라이브러리이다. @NoArgsConstructor@NoArgsConstructor은 파라미터가 없는 디폴트 생성자를 자동으로 생성해주느 어노테이션이다.이를 사용하면, 클래스에 명시적으로 선언된 파라미터가 없는 생성자가 없더라도 인스턴스 생성이 가능하다. @AllArgsConstructor@AllArgsConstructor은 모든 필드 값을 파라미터로 받는 생성자를 자동으로 생성해주느 어노테이션이다.이를 사용하면, 클래스에 명시적으로 선언된 모든 필드 값을 파라미터로 가진 생성자가 없더라도 인스턴스 생성이 가능하다.

Java 2025.01.25

[Java] DAO / DTO / VO / Domain

DAO (Data Access Object)DAO는 DB의 데이터에 접근하기 위한 객체를 가리킨다. DB에 접근하기 위한 로직을 분리하기 위해 사용한다.직접 DB에 접근하여 data를 삽입, 삭제, 조회 등 조작할 수 있는 기능을 수행한다.(예: Query가 들어있는 메소드를 가진 클래스) DTO (Data Transfer Object)DTO는 계층 간 (Controller, Vies, Business Layer) 데이터 교환을 위한 Java Bean을 의미한다.DTO는 로직을 가지지 않는 데이터 객체익, getter / setter 메소드만 가진 클래스를 의미한다. VO (Value Object)VO는 Value Object의 약자로, Read-Only 속성을 가진 값을 가진 객체이다. 자바에서 단순히..

Java 2024.11.05