본문 바로가기

java49

방어적 복사 방어적 복사가 필요한 이유 객체 내에 List 같은 Collections 객체를 필드로 가지면 final로 선언해도 외부에서 .add로 조작이 가능하다. 이런 조작을 방어하기 위해 방어적 복사가 필요하다.public class Store { private final String name; private final List items; public Store(String name, List items) { this.name = name; this.items = items; // 외부 리스트를 그대로 받음 } public List getItems() { return items; // 내부 리스트를 그.. 2026. 6. 15.
주차 요금 계산 문제 : https://school.programmers.co.kr/learn/courses/30/lessons/92341 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr더보기처음 작성한 코드 (정답 코드)import java.util.*;class Solution { public int[] solution(int[] fees, String[] records) { HashMap inMap = new HashMap(); HashMap totalTimeMap = new HashMap(); for (String record : records) { .. 2026. 6. 15.
값 객체(Value Object)와 불변성 값 객체(Value Object)란? 1000원짜리 지폐 A와 1000원짜리 지폐 B가 있다.A와 B는 서로 다른 객체하지만 둘 다 1000원이라는 가치를 가짐A와 B가 다른 객체라는게 아니라 가지고 있는 값(value)가 중요!! public final class Money { private final long amount; // 불변성 public Money(long amount) { if (amount * hashCode : HashMap의 키나 HashSet의 원소 쓰일 때, 기준이 되는 값. 값 객체(Value Object)의 장점1. 불변성을 보장한다. (뒤에서 자세히 설명)2. 가독성을 올려주고 실수를 방지한다.public class Customer { pri.. 2026. 6. 12.
의존성 주입(Dependency Injection)과 조립자 의존성(Dependency)이란?어떤 객체가 자신의 기능을 수행하기 위해 필요로 하는 외부 요소 한 객체가 다른 객체를 사용할 때, 의존성이 있다고 한다. public class OrderService { private Rider rider = new Rider(); // 의존성 ... } 의존성 주입(Dependency Injection)이란? 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴 인터페이스를 사이에 둬서 클래스 레벨에서는 의존관계가 고정되지 않도록 하고 런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮춘다. 의존성 주입(Dependency Injection) 이 필요한 이유1. 객체 간 결합도 감소특정 구현체에 강하게 의존하지 않으므로,.. 2026. 6. 12.
Collection 주요 기능 - List 정렬 (Sort)기본 정렬 List numbers = Arrays.asList(5, 2, 8, 1, 9); // 숫자 오름차순 정렬 Collections.sort(numbers); // numbers = [1,2,5,8,9] // 숫자 내림차순 정렬 Collections.sort(numbers, Collections.reverseOrder()); // numbers = [9,8,5,2,1] List words = Arrays.asList("banana", "apple", "cherry"); // 문자 정렬 Collections.sort(words); // words = ["apple","banana","cherry"]중첩 정.. 2026. 6. 11.
쓰레드(Thread) 쓰레드(Thread)프로그램 내에서 독립적으로 실행되는 하나의 작업 단위 멀티 쓰레드(Multi-Thread) 구현Thread 클래스를 상속받아 쓰레드 구현 가능Thread.run() 메서드를 오버라이드 해서 쓰레드가 수행할 작업 정의 가능start() 메서드로 새로운 쓰레드가 생성되고 run()으로 실행됨ex) 쓰레드 2개가 각각 0~9까지 출력하는 멀티 쓰레드 프로그램 public class MyThread extends Thread{ @Override public void run() { String threadName = Thread.currentThread().getName(); System.out.println("::: " + threadName + "쓰레드.. 2026. 6. 11.