본문 바로가기

분류 전체보기373

[JAVA8] Optional 목차Optional 등장 배경 Optional 주의 사항 Optional API 참고 자료Optional 등장 배경 자바 프로그래밍에서 NullPointerException을 종종 보게 되는 이유 public class Progress { private Duration studyDuration; private boolean finished; public Duration getStudyDuration() { return studyDuration; } public void setStudyDuration(Duration studyDuration) { this.studyDuration = studyDuration; }}public class OnlineC.. 2024. 10. 3.
[JAVA8] Stream 목차Stream 특징 Stream 파이프라인 중개 오퍼레이션 종료 오퍼레이션 참고 자료 Stream 특징  Stream은 데이터 저장소가 아니다Stream은 데이터의 저장소가 아니라 데이터를 처리하는 파이프라인 컬렉션(List, Set ...)은 데이터를 담고 있지만, Stream은 그 데이터를 연속된 요소(sequence of elements)로서 처리하는 작업을 지원 List numbers = Arrays.asList(1, 2, 3);Stream stream = numbers.stream(); // 데이터를 처리하는 스트림 생성 여기서 스트림은 데이터를 담고 있는 게 아니라, numbers 리스트에 있는 데이터를 연산할 때 사용하는 것  Functional in natureStream API는 함수형.. 2024. 10. 2.
[JAVA8] 자바 8 API의 기본 메소드와 스태틱 메소드 목차 Iterable 기본 메소드 Collection 기본 메소드 Comparator 기본 메소드 및 스태틱 메소드 참고 자료Iterable 기본 메소드 forEach()public interface Iterable { default void forEach(Consumer action) { Objects.requireNonNull(action); for (T t : this) { action.accept(t); } }} forEach() - 활용public class Test { public static void main(String[] args) { List name = new ArrayList(); na.. 2024. 10. 2.
[JAVA8] 인터페이스 기본 메소드와 스태틱 메소드 목차 기본 메소드 (Default Methods)스태틱 메소드 (Static Methods)참고 자료기본 메서드 (Default Methods)기본 메서드(Default Methods) ?인터페이스에 메소드 선언이 아니라 구현체를 제공하는 방법 해당 인터페이스를 구현한 클래스를 깨트리지 않고 새 기능을 추가할 수 있다 기본 메소드는 구현체가 모르게 추가된 기능으로 그만큼 리스크가 있다 컴파일 에러는 아니지만 구현체에 따라 런타임 에러가 발생할 수 있다 반드시 문서화 할 것. (@implSpec 자바독 태그 사용) Object가 제공하는 기능 (equals, hasCode)는 기본 메소드로 제공할 수 없다 구현체가 재정의해야 한다 본인이 수정할 수 있는 인터페이스에만 기본 메소드를 제공할 수 있다.. 2024. 10. 2.
[JAVA] 프로그래머스 LEVEL3 길 찾기 게임 https://school.programmers.co.kr/learn/courses/30/lessons/42892 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr코딩테스트 연습 > 2019 KAKAO BLIND RECRUITMENT > 길 찾기 게임 난이도: LEVEL3알고리즘 유형: 이진 트리 구현 + 여러가지 순회 방법  핵심 부분 문제에서는 친절하게도 큰 힌트를 준다. 1. 해당 트리는 이진 트리 2. 임의의 노드 V의 왼쪽 서브 트리(left subtree)에 있는 모든 노드의 x값은 V의 x값보다 작다. 3. 임의의 노드 V의 오른쪽 서브 트리(rig.. 2024. 10. 2.
[JAVA] 프로그래머스 LEVEL3 금과 은 운반하기 https://school.programmers.co.kr/learn/courses/30/lessons/86053 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr코딩테스트 연습 > 월간 코드 챌린지 시즌3 > 금과 은 운반하기  난이도: LEVEL3알고리즘 유형: 이분탐색(매개변수 탐색) 핵심 부분  디테일한 end 설정하기  아무 생각 없이 end를 Long.MAX_VALUE 최댓값으로 설정하고 돌렸는데5~7개 케이스가 틀렸다.  로직을 보면 충분히 Long.MAX_VALUE를 넘어서는 케이스가 나온다.// a + b 최댓값: 10^9 * 2 // 1번 왕.. 2024. 10. 2.