묻고 답해요
156만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
클래스 메서드가 함수가 아닌 이유
안녕하세요. 강사님!클래스 메서드 역시 클래스에 소속되어있기 때문에 인스턴스에 독립적이더라도 함수가 아닌 메서드로 보는 것이라 이해해도 될까요?
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
07 메서드 참조6-매개변수2 의 강의영상중 오타 있네요
[질문 내용]07 메서드 참조6-매개변수2 의 강의영상중 오타 있네요 BiFunction<Person, Integer, String> fun2 = Person::introduceWithNumber;System.out.println("person.introduceWithNumber="+fun1.apply(person,1)); //<= fun2 의 것을 호출 해야 하는데 fun1 을 호출합니다. 복 붙 하시다가 fun2로 변경하는거 실수하신것 같네요
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
강의자료 실행시 오류나요
[질문 내용]여기에 질문 내용을 남겨주세요.강의자료받아서 실행시 오류가나네요 ;;뭐가문제일까요 ?? [질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
[참고 영상] "CPU 수와 스레드 수를 비슷하게 맞춰야 하는 이유"
05분 30초 부분에 "왜 CPU 수와 스레드 수를 맞추는 것이 효율적인지에 대해 이해가 잘 안 가면 ~~를 참고하시라."라고 하셨는데 이와 관련하여 궁금하신 분을 위해 정보 남겨둡니다.영상: 김영한의 실전 자바 - 고급 1편, 멀티스레드와 동시성 - 섹션 2. 프로세스와 스레드 소개 - 컨텍스트 스위칭 영상 1분 ~ https://www.inflearn.com/courses/lecture?courseId=334352&type=LECTURE&unitId=232316&tab=curriculum
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
값이 없으면 예외를 던지는 것이 더 자연스러운 상황에 대한 질문
베스트 프랙티스 6.무조건 Optional이 좋은 것은 아니다 부분을 설명 하실 때 "값이 없으면 예외를 던지는 것"이 더 자연스러운 상황에 대한 설명 부분에서 궁금한 것이 생겨서 질문드립니다. 예를 들어 특정 ID 기반으로 User 엔티티를 찾는 DBA 코드가 있다고 할 때 반환타입을 Optional<User>가 아닌 User로 했을 때 클라이언트 코드쪽에서는 if (user == null) { throw new NotFoundException("..."); }아래와 같은 Optional을 사용한 코드보다 위와 같은 이런 코드가 더 낫다는 걸로 받아들이면 될까요??findUserById(userId) .orElseThrow(() -> new NotFoundException("..."));
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
Optionl.of에 대한 질문
Optinal은 "값이 없을 수도 있다" 라는 의도를 드러내기 위해 사용하잖아요.근데 Optional의 정적 생성자 메서드 중에 Optional.of()를 보면, null일 경우 NPE가 발생하는데, 그럼 Optional을 사용하는 의미가 없지 않나요? Optional.ofNullable과 empty는 사용의도라던가 언제 사용하면 되겠다에 대한 인사이트가 확 오는 반면에 Optional.of는 언제 사용하면 좋을지에 대한 감이 안오네요.
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
저도 람다에 파라미터 힌트를 키고싶어요,,
저도 람다 사용할 때 o -> o.getDelivery() 이거 사용할 때 파라미터 힌트로 Order 같은걸 띄우고싶습니다. 옵션에 Inlay Hints 에서 자바쪽도 다 켜보고 했는데 저는.. 왜 안켜질까요 ㅠㅠ
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
[수정 제안] 10. Optional.pdf - p.24 - orElse() 사용 용도
공부하던 중에 이 부분은 이렇게 수정해야 되는 것 아닌가..? 싶어서 글 남겨봅니다.[수정 제안 정보]대상 강의록: 10. Optional.pdf대상 위치: 강의록 p.24의 최상단 부분, 영상의 10분 50초~수정 제안수정 전: 사용 용도orElse(T other)- 값이 이미 존재할 가능성이 높거나, ...수정 후: 사용 용도orElse(T other)- 값이 존재하지 않을 가능성이 높거나, ...수정 제안에 대한 근거orElse(T other)는 other의 생성 비용이 높은 경우에 "값이 이미 존재함에도 불구하고 생성 연산을 수행해야됨"으로 인해서 비효율이 발생합니다.이는 바꿔 말하면 "값이 존재하지 않는 경우에는 생성 연산이 필수적임"이기 때문에 "값이 존재하지 않는 경우에는 비효율이 발생하지 않음"이라고 해석할 수 있을 것 같습니다.이때 강의에서 말하고자 하는 바는 "orElse()는 비효율이 발생할 수도 있다. 하지만 발생하지 않는 경우에는 사용해도 좋다." 라고 이해했는데, 이때 "비효율이 발생하지 않는 경우"를 "값이 존재하지 않는 경우(생성 연산이 꼭 필요한 경우)"라는 표현으로 대체할 수 있기 때문에"값이 존재하지 않을 가능성이 높은 경우(= 비효율이 발생하지 않는 경우)에는 orElse()를 사용해도 괜찮다."라고 수정해야 하는 것이 아닌가 싶어서 제안합니다.
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
[오타 제보] 10. Optional.pdf - p.11
[오타 정보]대상 강의록: 10. Optional.pdf대상 위치: 강의록 p.11의 2. ifPresentOrElse() 코드 부분, 영상의 5분 ~오타 내용수정 전public class OptionalProcessingMain { ... System.out.println("=== 2. ifPresentOfElse() ==="); // Of라고 오타 ...수정 후public class OptionalProcessingMain { ... System.out.println("=== 2. ifPresentOrElse() ==="); // 'Of' -> 'Or' 수정 ...
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
MyFuction과 switch문을 활용한 메서드는 고차함수 방식이 아닌가요?
수업 9분 50초 부근에서 "함수를 인자로 받아서 로직을 결정하는 형태가 전형적인 고차 함수이다."라는 부분이 있습니다. 하지만 getOperaion 함수를 보면 Myfunction을 반환하지만 인자로 코드 조각을 받지 않고 getOperation 내부에서 로직을 작성하게 되는 형태인데, 그럼 getOperation 함수는 고차함수라고 부르기 어려운걸까요??고차함수의 특징은 함수형인터페이스를 파라미터로 받아서 클라이언트 코드쪽에서 로직(코드 조각)을 람다식으로 받아서 처리하는 형태를 고차함수라고 이해하고 있습니다.하지만 getOperation은 파라미터로 String 타입 하나만 받고 람다식을 getOperation 내부에서 정의하고 있기에 코드 조각을 파라미터로 받지 않았으니 고차함수라고 보기 어려운걸까? 라는 의문점이 있습니다
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
Stream.of(names).forEach(System.out::println) 과 names.stream.forEach(System.out::println) 작동방식의 차이
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]저는 List<String> names = List.of("Kim", "Lee", "Park", "Kang"); 이라는 리스트를 만들고 Stream 을 통해 forEach를 돌리려고 했습니다.두 가지 경우로 만들었는데.names.stream.forEach(System.out::println)Stream.of(names).forEach(System.out::println);여기서 첫번째방법의 결과값은 한줄마다 값들이 출력되어 나왔습니다.KimLeeParkKang하지만 두번째방법의 결과값은 첫번째 방법과 똑같다고 예상했던 것과 달리 리스트형식의 toString 으로 출력되었습니다.[Kim, Lee, Park, Kang]이때, Stream.of(List).foreach() 와 (List).stream.foreach() 의 작동방식의 차이를 알고 싶습니다.
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
안녕하세요! (섹션 2. 람다가 필요한 이유) 수업 자료 내용에 대해서 궁금한 점이 생겼습니다!
안녕하세요!(섹션 2. 람다가 필요한 이유) 수업 자료 17p해당 페이지에서 "변하는 부분은 그대로 유지하고, 변하지 않는 부분을 어떻게 해결할 것 인가에 집중하면 된다." 라고 쓰여있는데해당 페이지 맨 밑에 부분에는"변하지 않는 부분은 그대로 유지하고, 변하는 부분은 외부에서 전달 받아서 처리한다" 라고 나와있습니다! 두 말이 서로 맞지 않는 것 같아서요..ㅜㅜ"변하는 부분은 그대로 유지하고, 변하지 않는 부분을 어떻게 해결할 것 인가에 집중하면 된다."-> "변하지 않는 부분은 그대로 유지하고, 변하눈 부분을 어떻게 해결할 것 인가에 집중하면 된다."라고 수정이 필요한 건가 싶어서 질문드립니다! 감사합니다
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
FilterExampleEx2의 또 다른 답안 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 정보]질문 내용의 위치:3. 함수형 인터페이스.pdf _ 문제와 풀이 _ 문제1 - FilterExampleEx2제가 작성한 소스코드: https://inf.run/GQrVP질문 요약: 1) Predicate 말고도 추가적으로 filter() 메서드도 BiFunction 함수형 인터페이스로 대체했는데, 이 정도까지 (메서드까지) 대체하는 것은 너무 과한 행동인지 궁금합니다.2) BiFunction.apply()를 호출하여 필터링 하는 방식은 filter() 메서드로 필터링하는 방식보다 직관성이 떨어지기 때문에 권장되지 않는지 또는 그냥 사용해도 되는지 궁금합니다. [질문 내용]안녕하세요. 기존 FilterExampleEx2의 모든 부분을 자바가 제공하는 함수형 인터페이스로 대체하는 문제로 잘못 이해해서 filter(리스트, Predicate) 메서드까지 BiFunction<리스트, Predicate, 리스트> 함수형 인터페이스로 대체를 했습니다. 이때 제가 생각했을 때는 크게 두 가지 부분이 문제가 될 수도 있겠다고 생각을 했는데, 실제로도 문제가 될 위험이 있는지 궁금해서 질문드립니다. (필터링 결과는 동일합니다.) (제가 추측한) 문제 상황1. 너무 과한 대체메서드까지 함수형 인터페이스로 대체하는 것은 너무 과하다. (제가 추측한) 문제 상황2. 직관성의 저하(영한님 답안의 경우) filter() 메서드를 호출하는 방식의 경우 메서드명이 filter로 직관적이다.(제 답안의 경우) BiFunction.apply()를 호출하는 방식의 경우 apply()라는 메서드명만 보고는 "필터링한다"라는 느낌을 받을 수 없어 직관적이지 못하다.제가 작성한 소스코드는 [질문 정보] 부분에 구글 드라이브 링크를 첨부했으나, 혹시 몰라 질문글에도 작성해봅니다.package lambda.ex3; import java.util.ArrayList; import java.util.function.BiFunction; import java.util.function.Predicate; import java.util.List; // 내 풀이 public class FilterExample { public static void main(String[] args) { List<Integer> numbers = List.of(-3, -2, -1, 1, 2, 3, 5); System.out.println("원본 리스트: " + numbers); // predicate까지 parameter로 받으면 더 유연하다. BiFunction<List<Integer>, Predicate<Integer>, List<Integer>> listFilter = (numberList, predicate) -> { ArrayList<Integer> filteredList = new ArrayList<>(); for (Integer number : numberList) { if (predicate.test(number)) filteredList.add(number); } return filteredList; }; // 조건 1. 음수(negative)만 골라내기 Predicate<Integer> isNegative = n -> n < 0; List<Integer> negatives = listFilter.apply(numbers, isNegative); System.out.println("음수만: " + negatives); // 조건 2. 짝수(even)만 골라내기 Predicate<Integer> isEven = n -> n % 2 == 0; List<Integer> evens = listFilter.apply(numbers, isEven); System.out.println("짝수만: " + evens); } }
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
[오타 제보] 3. 함수형 인터페이스.pdf - p.23
[오타 제보]대상 강의록: 3. 함수형 인터페이스.pdf대상 위치: #특화 함수형 인터페이스 - ##Operator를 제공하는 이유 - 1. 의도(목적)의 명시성 중 세 번째 글머리대상 페이지: p.23오타 내용수정 전: 만약 모두 Function<T, R>나 BiFunction<T, T, T>만으로 처리한다면, ...수정 후: 만약 모두 Function<T, T>나 BiFunction<T, T, T>만으로 처리한다면, ...입력과 리턴이 같은 XxxOperator와 비교하는 문장이기 때문에 BiFunction<T, U, R>을 BiFunction<T, T, T>으로 표현했으니 Function<T, R>도 Function<T, T>으로 표현해야 될 것 같아서 제보합니다!앞서 배웠던 제네릭이랑 연관된 부분을 배우니 특히 더 재밌습니다!!
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
[오타 제보] 2. 람다.pdf p.40
[오타 제보]대상 강의록: 2. 람다.pdf대상 페이지: p.40의 main() 코드 블록오타 내용 변경 전(1): // 1. 합 구하기 (초기값 0, 덧셈 로직)변경 후(1): // 1. 합 구하기 (초깃값 0, 덧셈 로직)변경 전(2): // 2. 곱 구하기 (초기값 0, 곱셈 로직)변경 후(2): // 2. 곱 구하기 (초깃값 0, 곱셈 로직) 코드 블록에서는 초기값이라고 되어 있고, 바로 밑에 용어 - reduce, fold 부분에서는 초깃값이라고 되어 있어서 저도 궁금해서 검색해봤는데 초깃값으로 표기하는 것으로 확인됩니다. 이런 맞춤법은 명확한 기준이 없이 국립국어원 마음대로 정하기는 하던데 혹시 강의록에서 단어를 통일하실 때 도움이 될까 해서 제보합니다. 출처1: IT 글쓰기와 번역 노트 - 5.1. 맞춤법 - 값 <- 여기서 페이지 조금 내리다 보면 d. 사전에 ‘-값’으로 등재된 단어 부분에 있습니다.출처2: 초기값 - TTA 정보통신 용어사전 - "초기값은 ... => 규범 표기는 '초깃값'이다."출처3: 국립국어원 답변 - "'최댓값', '최솟값', '초깃값'이 표준어입니다 ..."
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
[오타 제보] 인프런 내에서 섹션 명이 기본값으로 설정되어 있습니다!
[질문 내용]아래 사진과 같이 섹션1의 제목이 기본값으로 설정되어 있습니다. [사진: 자바 고급3편의 '커리큘럼' 목록에서 보이는 섹션들] .
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
사소한 오타
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.매개변수 전달관련 예제 출력할때 오타가 약간있는거 같습니다.System.out.println("person.introduceWithNumber = " + fun2.apply(person, 1)); // fun2로 변경
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
2.람다.pdf
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 2.람다.pdf 36p MyFunction 은 함수형 인터페이스이며, String apply(String s) => StringFunction 이거죠??
-
미해결자바 ORM 표준 JPA 프로그래밍 - 기본편
일대일 optional 여부에 따른 UNIQUE 제약
안녕하세요! 강의를 너무나 잘 듣고 있습니다. 일대일 강의를 들으면서 이것저것 만져보다가 @OneToOne(optional=true) 인 경우에는 UNIQUE 제약이 걸리지 않고 반대로 false인 경우에는 UNIQUE 제약이 걸리는 것을 알게 되었습니다.혹시 이렇게 구현된 이유가 무엇인지 알 수 있을까요?
-
미해결iOS 개발을 위한 swift5 완벽 가이드
if랑 옵셔널 사용했는데 뭐가 잘못된걸까요? 똑같이 인덱스 범위 벗어난다고하네요
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. let m = Matrix() m[0,0] // m[0,10] struct Matrix2 { var data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] subscript(row: Int, col: Int) -> Int? { if row < data.count && col < data[0].count { // 행의개수, 열의개수 미만 3이면 0~2까지 return data[row][col] } else { return nil } } // 읽기전용 서브스크립트, get {}생략 됨 } let test = Matrix() m[0,4]