반응형
[넥스트스탭] 블랙잭 - 자바 플레이 그라운드
공부/Java2024. 4. 30. 17:11[넥스트스탭] 블랙잭 - 자바 플레이 그라운드

깃 저장소학습 전https://github.com/ljw1126/my-java-blackjack-playground/tree/exercise-blackjack/src/main/java/nextstep/blackjack 학습 후https://github.com/ljw1126/my-java-blackjack-playground/tree/practice/src/main/java/nextstep/blackjack어려웠던 부분 - 클래스 책임을 제대로 처리하지 못하여, 로직이 분산되어 코드를 읽기 힘들었음- 테스트시 딜러와 플레이어가 가진 패를 초기화하는 방법을 생각지 못해 헤매었슴- 블랙잭 게임에 대한 이해 부족 (=요구사항 이해 부족)특히나 블랙잭 게임의 승패 판정할 때 딜러와 플레이어간의 1:1 비교를 이해..

[넥스트스탭] 좌표계산기 - 자바 플레이 그라운드
공부/Java2024. 4. 30. 17:11[넥스트스탭] 좌표계산기 - 자바 플레이 그라운드

깃 저장소https://github.com/ljw1126/my-java-coordinate-playground/tree/practice/src/main/java복습 - 좌표 계산기 (선, 사각형, 삼각형)[요구사항]① 사용자가 점에 대한 좌표 정보를 입력한다② 좌표 정보는 괄호로 둘러쌓여 있으며, 쉼표(,) 로 x/y값을 구분한다 [예시]선의 경우 (10,10)-(14,15)사각형의 경우 (10,10)-(22,10)-(22,18)-(10,18)삼각형의 경우 (10,10)-(14,15)-(20,8)③ x, y 좌표 값의 범위는 1 ~ 24 이다④ 입력 범위를 초과할 경우 에러 문구를 출력하고 다시 입력을 받는다⑤ 정상적인 값을 입력한 경우, 콘솔에 2차원 그래프와 결과값을 출력한다 [결과]선의 경우 두 점..

[넥스트스탭] 자동차 경주 게임 - 자바 플레이 그라운드
공부/Java2024. 4. 30. 17:11[넥스트스탭] 자동차 경주 게임 - 자바 플레이 그라운드

깃 저장소학습 전https://github.com/ljw1126/my-java-racingcar-playground/tree/myself/src/main/java 학습 후https://github.com/ljw1126/my-java-racingcar-playground/tree/practice/src/main/java복습 - 자동차 경주 게임[기능 요구사항]① 각 자동차에 이름을 부여할 수 있다. (이때 자동차 이름은 5자를 초과할 수 없다)② 자동차 이름은 쉼표(,)를 기준으로 구분한다③ 전진하는 조건은 0에서 9사이에서 random값을 구한 후 값이 4이상인 경우이다④ 게임 종료 후 우승자를 출력한다. (이때 우승자는 한명 이상일 수 있다) [실행 결과]경주할 자동차 이름을 입력하세요(이름은 쉼표(,..

[넥스트스탭] 숫자 야구 게임 - 자바 플레이 그라운드
공부/Java2024. 4. 30. 17:11[넥스트스탭] 숫자 야구 게임 - 자바 플레이 그라운드

강의 링크 https://edu.nextstep.camp/c/9WPRB0ys/ 플레이그라운드 edu.nextstep.camp깃 허브 저장소학습 전https://github.com/ljw1126/my-java-baseball-playground/blob/myself/src/main/java 학습 후https://github.com/ljw1126/my-java-baseball-playground/tree/practice/src/main/java학습 전 직접 작성한 코드 (펼처보기)반성)① 객체 지향적 언어를 사용하면서도, 거리가 먼 절차적 코드를 작성② 절차적 코드로 인해 한 눈에 로직을 파악하기 힘듦 (가독성 저하)③ 테스트 코드 미작성④ 클래스 미분리 - view, model, controller⑤ 의미..

[Java] Reflection API 테스트 학습(with Baeldung)
공부/Java2023. 11. 20. 13:19[Java] Reflection API 테스트 학습(with Baeldung)

목차 *테스트 코드 작성시 JUnit5, Assertj 사용 Baeldung 테스트 학습 class name 활용하여 인스턴스 생성하기 Job 인터페이스 public interface Job { String getJobType(); } MaintenanceJob 클래스 public class MaintenanceJob implements Job{ @Override public String getJobType() { return "Maintenance Job"; } } *PaintJob, RepairJob 클래스도 반환값만 다르고 동일하게 구현 PlatinumJobCard 클래스 setJobType()에 String과 Class 타입으로 받아 인스턴스 생성 후 필드 주입하고, startJob()을 호출하는..

[Java] Stream Quiz 개인 풀이 (출처. 망나니 개발자 기술 블로그)
공부/Java2023. 8. 15. 11:56[Java] Stream Quiz 개인 풀이 (출처. 망나니 개발자 기술 블로그)

목차 출처 (망나니 개발자 기술 블로그) https://mangkyu.tistory.com/116 [Java] Stream API 연습문제 풀이 (5/5) 이번에는 Stream API를 연습해볼만한 문제를 제공해보고자 합니다. 자동화된 테스트를 통해 정답을 확인하도록 제공하고 있으니 직접 문제를 풀어서 정답을 확인해보실 분들은 아래 내용을 참고 mangkyu.tistory.com *자료 받으실 때 Star 는 필수 수행 - 소요 시간 1일차 1시간 40분 2일차 40분 3일차 20분 4일차 15분 5일차 15분 암기보다는 [stream 생성 -> 중간 연산 -> 최종 연산] 과정에 집중해서 연습 Quiz1 1-1. 각 취미별 선호 인원 수 구하기 - csv 파일의 경우 readCsvLines() 통해서 ..

[Java] Stream 최종 연산(Terminal Operation)
공부/Java2023. 8. 5. 21:07[Java] Stream 최종 연산(Terminal Operation)

기본형(Primitive Type) Stream 1)  boxed().collect(..)- Primitive Type 의 Stream을 Boxing Type 의 Stream으로 변환한다- boxed()의 경우 중간 연산에 속하나 collect() method chaning 방식에 대해 설명하기 위해 추가Stream integerStream = IntStream.of(1, 2, 3, 4, 5).boxed();Stream longStream = LongStream.of(1, 2, 3, 4, 5).boxed();Stream doubleStream = DoubleStream.of(1.1, 2.2, 3.3, 4.4, 5.5).boxed();// List 로 최종연산 처리List integers = integer..

[Java] Stream 중간 연산 (Stream Intermediate Operation)
공부/Java2023. 8. 3. 22:53[Java] Stream 중간 연산 (Stream Intermediate Operation)

Stream 중간 연산1) distinct(): 중복 요소를 제거 Primitive Type 경우 // IntStream.class IntStream distinct();// #예시int[] intStream = new int[] {1, 2, 3, 4, 1, 2, 3, 4};int[] result = Arrays.stream(intStream).distinct().toArray();assertThat(result).hasSize(4); // ok Collection 경우: Person 클래스에 정의한 equals 통해 비교하여 같은 객체인지 판별한다( 동등성 )// Collection.classdefault Stream stream() { return StreamSupport.stream(this...

[Java] Stream 생성 (파일 데이터 제외)
공부/Java2023. 8. 3. 22:53[Java] Stream 생성 (파일 데이터 제외)

Collection 인터페이스 Collections 인터페이스 구현체는 stream() 메서드 호출하여 Stream 객체로 변환한다 Stream stream()public interface Collection extends Iterable { //.. default Stream stream() { return StreamSupport.stream(this.spliterator(), false); } //..} 1) ListList people = List.of(new Person("고길동", 30), new Person("마이콜", 20), new Person("고희동", 5));Stream personStream = people.stream(); 2) SetSet ..

[Java] Stream API
공부/Java2023. 8. 3. 22:52[Java] Stream API

목차 Stream ? - Java 8 부터 등장 - 다양한 data source(배열, 콜렉션 자료구조)를 표준화된 방법을 다루기 위한 방법 요약. Java Stream은 데이터를 빠르고 편리하게 대량 처리할 수 있도록 해주는 래퍼 클래스이다. 특징 ① 스트림은 데이터 소스로부터 데이터를 읽기만할 뿐 변경하지 않는다. (Read Only) List source = List.of(6, 4, 2, 3, 1, 5); List sorted = source.stream().sorted().collect(Collectors.toList()); System.out.println(source); // [6, 4, 2, 3, 1, 5] System.out.println(sorted); // [1, 2, 3, 4, 5, ..

[Java] 람다식을 더 짧게 - 메서드 참조 Method Reference
공부/Java2023. 8. 2. 20:54[Java] 람다식을 더 짧게 - 메서드 참조 Method Reference

Method Reference - Java 8 도입- 하나의 메서드만 호출하는 람다식은 메서드 참조로 간소화하여 표현가능하다 (전달 인자를 생략하여 코드 간결해짐)- 구분자로 :: 사용- 아래의 4가지 유형 있음 아래 코드는 정렬할 때 [클래스 구현 -> 람다 -> 람다 간소화 -> 정적 메서드 참조]에 대한 비교 예시이다// 배열 선언Person[] perons = ...// (1) Comparator 구현 방식 (구 시대적)class PersonAgeComparator implements Comparator { public int compare(Person a, Person b) { return a.age().compareTo(b.age()); }}Arrays.sort(persons,..

[Java] Optional 클래스 메서드 (자바의 정석)
공부/Java2023. 8. 1. 17:34[Java] Optional 클래스 메서드 (자바의 정석)

NullPointerException(NPE)- Null 상태인 오브젝트를 레퍼런스할 때 발생 - Runtime error 이기 때문에 실행 전까지 발생 여부를 알기 쉽지 않음 Runtime 환경에서 에러가 발생할 경우, 심할 경우 서버 다운까지 가능하므로 발생시 리소스 비용이 만만치 않음 "Null pointer를 발명한 것은 나의 10억불짜리 실수였다" - Tony Hoare (출처 wikipedia)I call it my billion-dollar mistake. It was the invention of the null reference in 1965. At that time, I was designing the first comprehensive type system for references ..

[Java] Iterators 인터페이스 (자바의 정석)
공부/Java2023. 7. 31. 21:14[Java] Iterators 인터페이스 (자바의 정석)

목차 Interface Iterators 컬렉션에 저장된 요소들을 읽어오는 방법을 표준화 - Java 1.2 버전부터 지원 - 기본적으로 Iterators 변환의 경우 1회용이므로 순차조회 완료 시 재생성 해야함 - ListIterator의 경우 양방향으로 요소 접근이 가능하다 ( Enumeration과 Iterator는 단방향 ) 보통 요소가 있는지 확인(hasNext)하고, 요소를 읽는 것이 안전(next)하다 사용 방법 Collection 인터페이스의 iterator() 호출해서 Iterator 구현 객체를 얻어 사용 (1) List @DisplayName("Collection interface 구현체는 iterator 객체를 얻어서 요소 조회가 가능하다") @Test void listIterato..

[Java] Arrays 클래스 메서드 (자바의 정석)
공부/Java2023. 7. 31. 12:44[Java] Arrays 클래스 메서드 (자바의 정석)

목차 개인적으로 코딩 테스트, 알고리즘 문제 풀이시 아래의 static method 필수로 알고 있는 것이 좋다고 생각한다 - Arrays.sort() - Arrays.fill() - Arrays.asList() - Arrays.stream() - Arrays.toString() - Arrays.copyOf() - Arrays.copyOfRange() 배열의 동일성 확인 (1) Arrays.equals(A, B) - 두 배열의 equlity(동일성) 확인 - primitive type의 경우 값이 동일, reference type의 경우 참조 주소값이 동일한지 확인 @DisplayName("") @Test void equalsTest() { // given int[] arr1 = {1, 2, 3}; in..

[Java] String 클래스 메서드 (자바의 정석)
공부/Java2023. 7. 31. 11:54[Java] String 클래스 메서드 (자바의 정석)

String 클래스 특징 1) char[]와 메서드(기능)을 결합한 것이다 String 클래스 = char[] + 메서드(기능) - char[] : 문자열 배열 - String 클래스 생성시 heap에 실제 값(문자열)이 저장되고 stack 변수에는 참조 주소값을 가짐 2) 내용을 변경할 수 없다 (read only*) 문자의 결합을 하면 새로운 문자로 바뀌고 새로운 참조 주소를 가짐 String 클래스의 주요 메서드 참고. substring(int from, int to) "hamburger".substring(4, 8) returns "urge" "smiles".substring(1, 5) returns "mile" - 문자열 인덱스는 0번 부터 시작 - from : inclusive (포함) - t..

공부/Java2023. 7. 28. 21:03[Java] FunctionalInterface와 Lambda Expression

@FunctionalInterface - 단 하나의 추상 메서드(Single Abstract Method) 만을 가지는 인터페이스 - static / default method 선언 가능 (Java 8 부터) - java.lang.Runnable, java.util.Comparator 등 Function R apply(T t); BiFunction R apply(T t, U u); Supplier T get(); Consumer void accept(T t); T타입의 인자를 받아 로직 수행 (리턴 x) BiConsumer void accept(T t, U t); T, U 타입 인자를 받아 로직 수행 (리턴x) Predicate boolean test(T t); Comparator int compare(..

[Java] Enum (이펙티브 자바 3판)
공부/Java2023. 7. 26. 19:17[Java] Enum (이펙티브 자바 3판)

참고. Enum Method ordinal() 은 열거형 상수의 순서에 따라 변경되므로, 열거형 인스턴스의 상수 필드를 사용하는 것을 권장 (아이템 35)  아이템34. 상수 대신 열거 타입을 사용하라 정수 열거 패턴 (안티 패턴)public static final int APPLE_FUJI = 0;public static final int APPLE_PIPPIN = 1;public static final int APPLE_GRANNY_SMITH = 2;public static final int ORANGE_NAVEL = 0;public static final int ORANGE_TEMPLE = 1;public static final int ORANGE_BLOOD = 2;- 타입 안전을 보장할 방법이 없..

[Java] Enum values 조회 (Baeldung)
공부/Java2023. 7. 26. 13:59[Java] Enum values 조회 (Baeldung)

1. Enum Month 클래스 생성 - 각 Month 인스턴스는 code와 number 값을 가짐 - Enum Constructor(생성자)는 기본적으로 private 로 생략가능하다. public enum Month { JANUARY("Jan", 1), FEBRUARY("Feb", 2), MARCH("Mar", 3), APRIL("Apr", 4), MAY("May", 5), JUNE("Jun", 6), JULY("Jul", 7), AUGUST("Aug", 7), SEPTEMBER("Sept", 7), OCTOBER("Oct", 10), NOVEMBER("Nov", 11), DECEMBER("Dec", 12); private final String code; private final int number..

반응형
image