묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
flatMap 응용 방법에 대해서, 이렇게 하는게 맞는지?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. flatMap 을 응용하려고 만들어봤는데 이렇게 하는게 맞는지?? 알고 싶어서 코드를 올립니다.일단 저가 한 것은, 리스트 안에 맵 자료구조 를 여러개를 놓고(map 도 of가 있네요) 이것들을 평탄화 하려고 한 방법 입니다.이렇게 하면 되는 것인가요?(한번에 하는 방법을 못찾아서 이렇게 2번으로 쪼갰습니다.)
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
선생님께 질문드립니다!
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]드디어 자바 완강을 했는데 중급 1~2 와 고급 1은 두번씩 들었고 고급2도 혼자서 채팅프로그램,네트워크 이런거 다 만들어보긴 했는데 이거 공부하는동안 또 기억이 잘 안나더라구요 ㅎㅎ.. 람다도 이제 어느정도 다 읽고 쓸줄은 아는데 자세한 메서드는 기억이 안나는 것도 많고, 다운 스트림 같은 경우에도 기억이 가물가물하고요.. 일주일에 한번씩 강의 마다 요약노트 작성한거 읽고 있긴한데 이대로 한번 쭉 읽고 스프링으로 넘어가는게 나을까요 아니면 자바를 좀 더 봐야할까요??
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
자바 람다의 지연 평가과 스트림의 지연 연산
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]자바 람다의 지연 평가과 스트림api의 지연 연산의 차이가 궁금합니다
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
디폴트 메서드 pdf파일 오류 및 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]디폴트 메서드 공부하다가 영상 화면이랑, pdf 결과 화면이 달라서 제보를 드립니다.영상 화면 에서는 time 다음에 2025-03-생략... 이렇게 나오는데,pdf 파일에서는이렇게 나옵니다. 그래서 오류이고요.여기서 질문이 생깁니다.pdf 파일 에서 time: 다음에 "(실행 시점: +1일)" 이렇게 나오는데, 어떻게 하신건가요?일단 생각나는 방법이..이렇게 만들기는 하였는데..pdf파일에 나온 결과처럼 하는 방법은 생각이 안납니다.(저의 생각상 포멧터 를 이용 하신것 같은데 모르겠더라고요.)추가1포멧터 라고, 생각한 이유 + pdf 파일 오류라 는 것을 아는 이유는.출력이 너무 없어 보여서 고치자는 생각에 고쳤고, 11:08초 부분에 pdf 파일을 보여주는데 이게 눈에 뛰더라고요.답변 부탁 드립니다.
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
자바 그룹핑
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 갓영한님 자바에서 이렇게 그룹핑 하는 경우도 있을까요 ?실무에서 보통 쿼리쪽에서 하지않나용??
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
'병렬스트림 사용시 주의점1' 중 I/O 바운드 작업은 '소요시간이 긴 작업'으로 이해해도 될까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? - 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? - 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? - 예[질문 내용]안녕하세요, 강의 즐겁게 듣고 있습니다.강의: 섹션 13. 병렬 스트림 - 병렬스트림 사용시 주의점1질문: 강의 내용 중 'Fork/Join 프레임워크를 I/O 바운드 작업에는 사용하지 않는다'는 내용에서 I/O 바운드 작업을 '소요시간이 긴 작업'으로 이해해도 될까요?세부I/O 바운드 작업을 공용 풀에서 처리할 경우 발생하는 문제들이 I/O 작업 자체보다는 긴 시간이 소요되는 작업으로 풀의 한정된 수의 스레드를 점유하는 것이 원인이라 이해했는데 강의내용이 I/O 바운드 작업에 초점을 맞추어 제 이해에 오해가 있는가 싶습니다.병렬 스트림 등의 기능을 통해 공용 풀에서 I/O 바운드 작업이 처리되면 스레드 블로킹에 의한 CPU 낭비, 스레드 수를 증가시킨다면 컨텍스트 스위칭 오버헤드 증가, 작업 훔치기 기법 무력화 등의 부작용이 있는데 이는 긴 시간이 소요되는 작업으로 풀의 한정된 수의 스레드가 오래 점유되면서 발생하는 문제로 이해했습니다.CPU 바운드 작업이라도 소요시간이 길다면 CPU 낭비를 제외하고 위와 같은 문제가 발생되리라 생각합니다. (I/O 바운드 작업이 긴 시간 CPU를 사용하지 않으면서 스레드를 점유한다면 무거운 CPU 바운드 작업은 긴 시간 CPU를 사용하면서 스레드를 점유, 이로 인해 공용풀의 스레드를 늘린다면 컨텍스트 스위칭 오버헤드 증가, CPU 바운드 작업이더라도 작업이 빨리 끝나지 않아 훔치기 기법 무력화 등)일반적으로 I/O 바운드 작업은 CPU 바운드 작업보다 긴 시간이 소요되는 것이 경험적/현실적 가정으로 알고 있습니다. 이런 일반적인 현상을 전제로 I/O 바운드 작업을 '소요시간이 긴 작업'을 대표하는 의미로 사용하신 것인지, 아니면 제가 놓친 다른 의미, I/O 바운드 작업만이 가지는 특징을 염두에 두신 것인지 궁금합니다.좋은 5월 보내시길 바랍니다. 감사합니다.
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
메서드 참조 4가지 유형(정적, 임의 객체) 구분 할수 있는 방법에 대해서,
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 궁금증이 생겨서 질문을 드립니다.메서드 참조의 4가지 유형중정적메서드 참조, 임의 객체의 인스턴스 메서드 참조의 표현 방식을 보시면"클래스명::메서드명" 똑같이 적힌 것 을 알수 있었습니다. 그래서 함께 쓰면 어떻게 될까 해보니 써지더라고요.여기서 질문이 생깁니다.이렇게 임의 객체, 및 정적 메서드를 같이 쓸 경우 구분법이 따로 있냐요?(아니면 변수 이름을 잘 지정해야 하는지?)Ide의 도움으로 메서드 이름을 클릭으로 구분은 가능한데,다른 방법이 없는지 궁금합니다.답변 부탁 드립니다.수정1 : 사진 수정(다른 것들도 되는지 확인하기 위해서)
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
변수 캡쳐 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 궁금증이 생겨서 질문을 드립니다.람다 vs 익명 클래스1 을 공부하다가, 변수지역 캡쳐, 부분이 기억이 안 나서 다시 듣게 되었는데요.(지역 클래스 - 지역 변수 캡쳐3)공부를 하고 다시 듣다 보니 localVar를 변경할수 있는 방법이 생각이 나더라고요.그래서 변경이 가능한지 테스트를 해보고, 바꾸어 보았습니다.바꾸어 보니, 값이 변경 할 수 있다는 사실을 알수 있었습니다.(사진 참조)d 여기서 질문이 생깁니다.이런식 으로 바꿀 수 있는데, 현업 에서도 이렇게 바꾸는 경우가 있냐요? 답변 부탁 드립니다.
-
해결됨김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
명령형 프로그램밍은 언제 어디서 쓰이는지?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 궁금증이 생겨서 질문을 드립니다.필터와 맵 활용 1,2를 보면서 선언적 및 명령형을 알수 있게 되었습니다.근데 여기서 궁금한 점이 생깁니다.선언적 프로그래밍이 검증이나, 맵핑 에 많이 쓰인다고 하였는데, "명령형 프로그램은 언제 어디서 쓰일까" 라는 생각을 하게 되었습니다.가르쳐 주실 수 있으신가요?답변 부탁 드립니다.
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
중간연산 sorted에 대해서 질문드립니다
중간 연산 강의를 듣던 중 궁금한 점이 생겨 질문드립니다!강의를 통해 Java의 스트림은 lazy하게 동작하며, 요소가 하나씩 흐르면서 중간 연산을 거쳐 최종 연산으로 전달된다고 배웠습니다.그런데 sorted는 정렬을 위해 모든 요소를 모아야 하므로, 다른 중간 연산들과 달리 lazy하게 하나씩 처리할 수는 없을 것 같습니다.이 경우 sorted는 전체 요소를 한 번에 처리하고 나서야 다음 연산으로 넘어가는 건가요?그렇다면 sorted는 중간 연산이지만 실제로는 최종 연산처럼 동작하는 게 아닌가요?
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
인스턴스 메소드 참조와 람다의 차이
강의 수강 중 궁금하여 실험한 내용 공유합니다. 2번 특정 객체의 인스턴스 참조에 관련한 내용입니다.강의자료에서는 () -> person.introduce가 person::introduce와 동일한 것처럼 설명된 것 같습니다. "그럼 person에 대한 캡처가 일어날까?" 하는 궁금증이 들었고, 다음과 같은 코드를 작성했습니다.Person person = new Person("Kim"); Supplier<String> instanceMethod = () -> person.introduce(); person = new Person("Lee"); System.out.println(instanceMethod1.get());컴파일러가 person이 사실상 final이 아니라면서 컴파일해주지 않더군요. 다음으로는 람다 대신 메소드 참조로 바꾸어보았습니다.Person person = new Person("Kim"); Supplier<String> instanceMethod = person::introduce; person = new Person("Lee"); System.out.println(instanceMethod.get());이는 컴파일에 성공하고, "I am Kim"이 출력됩니다. Person 클래스에 setName을 추가하고 메소드 참조 이후에 호출해보았습니다.Person person = new Person("Kim"); Supplier<String> instanceMethod = person::introduce; person.setName("Park"); person = new Person("Lee"); System.out.println(instanceMethod.get());"I am Park"이 출력됩니다. 요약하면 다음과 같습니다.() -> person.introduce 에서는 person이 사실상 final이 되어야만 한다.person::introduce는 사실상 final이 아니어도 되며, 해당 메소드 참조는 정의 시 객체 참조를 유지한다.
-
미해결김영한의 실전 자바 - 고급 3편, 람다, 스트림, 함수형 프로그래밍
JDK17에서 ExecutorService 클래스 내 close() 함수가 없는 오류
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]1. 예예예안녕하세요. 강의 잘 듣고 있습니다! 강의 3분 44초 전후로 ExecutorService를 close() 함수로 닫으셨는데 es.close() 부분에서 오류가 발생합니다(스크린샷 참고).찾아보니 Java 9 이상에서 ExecutorService 구현체가 AutoCloseable을 구현한 경우에만 close()를 사용 가능하다고 하는데 현재 JDK 17 버전을 쓰고 있는데도 close() 함수를 찾지 못하고 있습니다.(다만 shudown() 함수를 사용하니 정상적으로 컴파일이 되고 닫히고 있습니다)close() 대신 shutdown()을 사용하여도 성능상 차이가 없는지 궁금합니다. 글이 길어져서 죄송합니다. 답변 부탁드립니다. 감사합니다.
-
미해결김영한의 실전 자바 - 고급 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편, 람다, 스트림, 함수형 프로그래밍
Stream과 디버깅
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. 강의 정말 잘 보고 있습니다. Stream관련하여 질문이 있는데요. Stream 같은 경우에는 파이프라인을 작성하면서 연산마다 body부가 추가될 수도 있고 중간 연산이 계속 체이닝 되는 형태로 구성이 될 수도 있습니다. 이럴 때 어느 연산에서 문제가 생기는지 디버깅을 하는게 참 번거롭다는 생각이 들곤했습니다. 저 같은 경우에는 이럴 때 peek 와 sout을 활용해서 어떻게든 값을 확인하는 식으로 디버깅을 해왔는데 더 좋은 방법이 없을까요? 브레이크 포인트를 잡기도 명령형 프로그래밍 방식보다 어려운 점이 있는 거 같아서요 ㅠㅠ