본문 바로가기

자바7

Optional API Optional 만들기 ● Optional.of() ● Optional.ofNullable() ● Optional.empty() System.out.println(Optional.of(1).isPresent()); System.out.println(Optional.ofNullable(null).isPresent()); System.out.println(Optional.empty().isPresent()); Optional에 값이 있는지 없는지 확인하기 ● isPresent() ● isEmpty() (Java 11부터 제공) List springClasses = new ArrayList(); springClasses.add(new OnlineClass(1, "spring boot", true)); spri.. 2022. 3. 27.
Optional Optional 소개 자바 프로그래밍에서 NullPointerException을 종종 보게 되는 이유 ● null을 리턴하니까! && null 체크를 깜빡했으니까! 메소드에서 작업 중 특별한 상황에서 값을 제대로 리턴할 수 없는 경우 선택할 수 있는 방법 ● 예외를 던진다. (비싸다, 스택트레이스를 찍어두니까.) ● null을 리턴한다. (비용 문제가 없지만 그 코드를 사용하는 클리어인트 코드가 주의해야 한다.) ● (자바 8부터) Optional을 리턴한다. (클라이언트에 코드에게 "명시적"으로 빈 값일 수도 있다는 걸 알려주고, 빈 값인 경우에 대한 처리를 강제한다.) Optional ● 오직 값 한 개가 들어있을 수도 없을 수도 있는 컨테이너. 주의할 것 ● 리턴값으로만 쓰기를 권장한다. (메소드 .. 2022. 3. 27.
Stream API 사용할 Online Class의 spring, java, holyEvents 리스트 목록 List springClasses = new ArrayList(); springClasses.add(new OnlineClass(1, "spring boot", true)); springClasses.add(new OnlineClass(2, "spring data jpa", true)); springClasses.add(new OnlineClass(3, "spring mvc", false)); springClasses.add(new OnlineClass(4, "spring core", false)); springClasses.add(new OnlineClass(5, "rest api development", fals.. 2022. 3. 26.
Stream Stream ● sequence of elements supporting sequential and parallel aggregate operations ● 데이터를 담고 있는 저장소 (컬렉션)이 아니다. ● Funtional in nature, 스트림이 처리하는 데이터 소스를 변경하지 않는다. ● 스트림으로 처리하는 데이터는 오직 한번만 처리한다. ● 무제한일 수도 있다. (Short Circuit 메소드를 사용해서 제한할 수 있다.) ● 중개 오퍼레이션은 근본적으로 lazy 하다. ● 손쉽게 병렬 처리할 수 있다. names.add("holy"); names.add("moly"); names.add("god"); names.add("jesus"); // Stream 연속된 데이터를 처리하는 Opera.. 2022. 3. 26.
자바 8 API의 기본 메소드와 스태틱 메소드 Iterable의 기본 메소드 ● forEach() ● spliterator() List name = new ArrayList(); name.add("holy"); name.add("moly"); name.add("god"); name.add("jesus"); // 람다 표현식 name.forEach(s -> { System.out.println(s); }); // 메소드 참조 name.forEach(System.out::println); // splitrator로 만들어서 Spliterator spliterator = name.spliterator(); // trySplit을 이용하여 두개로 나누어줌 Spliterator spliterator1 = spliterator.trySplit(); while .. 2022. 3. 26.