프로그래밍/Java (21) 썸네일형 리스트형 java8 - Optional Optional Optional는 T타입의 객체를 감싸는 래퍼 클래스(Wrapper class)여서 optional타입의 객체는 모든 타입의 참조변수를 담을 수 있다. 최종 연산의 결과를 그냥 반환하지 않고 Optional객체에 담아 반환하여 반환된 결과가 null인지 체크하는 조건문 없이 null값으로 인해 발생하는 예외를 처리할 수 있다. Optional 객체 생성 of()나 ofNullable()메서드를 사용하여 Optional객체를 생성할 수 있다. 참조 변수의 값이 null일 가능ㄴ성이 있으면, of()대신 ofNullable()을 사용하여 생성하는것이 좋습니다. ( of()메서드는 매개변수의 값이 null이면 NPE를 발생하기 때문) Optional val = Optional.of("abc").. java8 변경사항 - 스트림API 최종연산 스트림의 최종연산 스트림 API에서 중간 연산으로 변환된 스트림은 아래의 최종연산을 통해 요소를 소모하여 결과를 표시합니다. 지연(lazy) 되어있던 모든 중개 연산들이 최종 연산싯에 모두 수행됩니다. 최종연산 이후 모든 요소를 소모하고 난 후에는 해당 스트림을 사용할 수 없게 됩니다. 1. 요소 출력 forEach(): 스트림의 각 요소를 소모하여 명시된 동작을 수행한다. 반환타입은 void여서 보통 출력하는 용도로 사용한다. Stream stream = Stream.of("A", "B", "C", "D"); stream.forEach(System.out::println); //ABCD 2. 요소 소모 reduce(): 첫번째와 두번째 요소로 연산을 수행 후 그결과와 세번째 요소로 연산을 수행하는식으로.. Java8 변경사항 - 스트림API 중간연산 스트림의 중간연산 스트림 API에의해 생성된 스트림은 아래의 중간연산을 통해 다른 스트림으로 변환됩니다. 스트림 필터링 스트림 변환 스트림 제한 스트림 정렬 스트림 연산 결과 확인 1. 스트림 필터링 스트림에서 중복된 요소를 제거하거나 조건에 맞지 않는 요소를 걸러낸다. filter(): 매개변수로 predicate가 필요한데 조건에 맞는 요소들로 새로운 스트림을 반환하며 필요에 따라 여러번 사용 가능하다. IntStream stream = IntStream.range(1,11); //1 ~ 10 stream.filter(i -> i % 2 == 0).forEach(System.out::println); // 2 4 6 8 10 짝수 출력 distinct(): 스트림에서 중복된 요소 제거 IntStrea.. Java8 변경사항 - 스트림API 특징과 생성 스트림이란? 자바 8에서 추가된 스트림 API에 대해 알아봅시다. 기존에 자바에서는 수많은 데이터를 다룰 떄 컬렉션이나 배열을 사용하였고 이 데이터에 접근하기 위해 for문과 Iterator를 사용하였습니다. 그러나 이렇게 작성된 코드는 길고 가독성도 떨어지며 재사용의 거의 불가능합니다. 이러한 문제를 해결하기 위해 자바8 부터 스트림 API가 도입되었습니다. 스트림은 데이터를 추상화하여 하루며 배열이나 컬렉션 뿐만 아니라 파일에 저장된 데이터도 모두 같은 방법으로 다룰수 있도록 해줍니다. 스트림 API의 특징 스트림은 작업을 내부 반복으로 처리한다. for(String str : list){ System.out.println(str); } //use stream stream.forEach(System... Java8 변경사항 - 람다 표현식 람다표현식이란? 자바 8에서 추가된 람다표현식에 대해 알아봅시다. 람다표현식(Lambda expression)은 간단히 말해 메소드를 하나의 식(expression)으로 표현한 것으로 메서드의 이름과 반환값이 없어지므로 익명함수(anonymous function) 라고도 부릅니다. 자바에서는 자바 8 버전부터 람다식을 사용하여 함수형 프로그래밍을 할 수 있게 되었습니다. //java7 int max(int a, int b){ return a > b ? a : b; } //java 8 (a, b) -> a > b ? a : b; 이러한 람다식은 메소드의 매개변수로 전달될 수도 있고, 메서드의 결과로 반환될 수도 있습니다. 따라서 람다식을 사용하면 기존의 불필요한 코드를 줄여 코드의 가독성을 높여줍니다. 람.. 이전 1 2 3 다음