자바/Java (중요하고, 이해 안 되고, 어려운)

    Stream

    Stream(스트림) ▶다양한 데이터 소스를 표준화된 방법으로 다루기 위한 도구 List list = Arrays.asList(1,2,3,4,5); Stream intStream = list.stream(); //컬렉션 Stream strStream = stream.of(new String[]{"a", "b", "c"}); //배열 Stream evenStream = Stream.iterate(0, n->n+2); //람다식 Stream randomStream = Stream.generate(Math::random0; //메서드참조 IntStream intStream = new Random().ints(5); //난수 스트림(크기가 5) Stream(스트림)의 특징 ▶스트림은 데이터 소스로부터 데이터를 ..

    Optional <T>

    Optional <T>

    Optional 1. Optional을 사용하는 이유 null을 한번 감싸서 간접적으로 다루기 위함 2. null 직접적으로 다루는 경우 1) NullpointException이 발생할 가능성이 있다. 2) if( result ! = null) ---- null을 체크하기 위한 if문이 필수, 코드가 복잡해짐 public final class Optional { private final T value; //T타입의 참조변수 ex) Animal ani ... 객체타입 참조변수 } Optional는 'T타입의 객체'를 감싸는 래퍼 클래스이다. 여기서 T는 "null을 포함한 모든 객체를 의미"한다. 따라서 Optional타입의 객체에는 모든 타입의 객체를 담을 수 있다. value는 "참조변수"이므로 nul..

    메서드 참조

    메서드 참조 사전지식 Function f String : 매개변수 타입 Integer : 리턴타입 메서드 참조 목적 : 람다식을 더 간결하게 만들기 위함 람다식 : (left, right) → Math.max(left, right) 메서드 참조 : Math::max 종종 람다식은 기존 메서드를 단순하게 호출하는 경우가 있다. 길게 쓸 필요가 없다. 간결하게 쓰자 1. 인스턴스 메서드 참조 람다식 : (a, b) → a.메서드이름(b) 메서드 참조 : 클래스이름::메서드이름 Function f = (a,b) → a.myMethod(b); //람다식(익명 구현 객체) Function f = String::myMethod; //메서드 참조(익명 구현 객체) *String은 매개변수 a의 타입을 나타냄 2. s..

    람다 Lambda

    람다 Lambda

    람다 Lambda 사전 지식 1. 익명 객체(=익명 클래스) 2. 익명 클래스 1) new 조상클래스 ( ) { 구현부 } 2) new 인터페이스 ( ) { 구현부 } 3. 익명 객체가 메서드의 매개변수로 통째로 들어 가는 경우 ex. a.method( ); → a.method( new 조상클래스 ( ) { } ); 4. 함수형 인터페이스의 의미 : "추상메서드를 1개만 가지고 있는 인터페이스"를 의미한다. 5. 람다함수(람다 메서드)를 "익명함수"라고 부르나 실제로는 함수가 아니다. 엄격히 말해서 익명객체이다. 그 이유는 익명객체를 람다함수로 전환가능하며, 람다함수를 익명객체로 전환하기 때문에 람다함수의 레벨은 함수(method)가 아니라 클래스(객체)이다. - 자바의 정석 7. 람다식(익명객체)를 다..