java
-
람다와 스트림 - Predicate의 결합백엔드/자바 2021. 9. 1. 15:05
람다와 스트림 - 함수의 결합 수학에서 두 개의 함수를 결합할 수 있는 것처럼 자바에선 두 람다식을 결합할 수 있도록 하고 있다. 그리고 당연히 미리 준비된 메서드만 가져다 쓰면 된다. andThen() 예를 들어 위와 같은 코드가 sgcomputer.tistory.com 이전 파트에서 설명했듯이 Function 타입의 참조변수끼리는 결합이 가능하다. 그리고 이러한 결합은 Predicate타입의 참조변수끼리도 가능하다. 예를 들어서 위와 같은 메서드가 있다고 가정해보자. if의 조건을 보면 논리 연산자 &&으로 조건이 이어진 것을 볼 수 있을 것이다. 이러한 논리 연산을 Predicate 간에도 할 수 있다. and() - && 예를 들어 위와 같은 코드가 있다고 가정해보자. Predicate의 참조변수..
-
람다와 스트림 - 함수의 결합백엔드/자바 2021. 8. 25. 19:57
수학에서 두 개의 함수를 결합할 수 있는 것처럼 자바에선 두 람다식을 결합할 수 있도록 하고 있다. 그리고 당연히 미리 준비된 메서드만 가져다 쓰면 된다. andThen() 예를 들어 위와 같은 코드가 있다고 가정해보자. 참조변수 ft1은 10진수를 넣으면 2진수로 반환하는 람다식을 저장하고 있다. 반면 참조변수 ft2는 2진수를 넣으면 10진수로 반환하는 람다식을 저장하고 있다. 만약 이 두 개의 함수를 합치고 싶다면 어떻게 해야할까? 그럴땐 andThen을 쓰면 된다. 위 코드와 같이 두 개의 함수를 andThen()메서드로 합쳐주면 두 함수는 하나로 합성된다. 이때 데이터의 흐름은 "ft1 (10진수 -> 2진수) => ft2 (2진수 -> 10진수)"로 된다. 그래서 정수 10을 입력하면 정수 1..
-
람다와 스트림 - java.util.function - part2백엔드/자바 2021. 8. 25. 14:44
람다와 스트림 - java.util.function - part1 이전 람다 파트에선 람다란 무엇인지, 람다를 사용하기 위한 방법, 함수형 인터페이스 등에 대해서 배웠다. 다시 한번 간단하게 복습하면 다음과 같다. - 람다식은 익명 객체를 간략하게 만든 표 sgcomputer.tistory.com 이전 파트에선 함수형 인터페이스를 쉽게 사용할 수 있게 만든 패키지 java.util.function에 대해 알아봤다. 이번 파트에서는 추가적으로 유용하게 쓸 수 있는 함수형 인터페이스에 대해서 알아보자. 매개변수가 두 개인 함수형 인터페이스 함수형 인터페이스 메서드 설명 BiConsumer void accept ( T t, U u ) 두 개의 매개 변수만 있고, 반환값이 없음 BiPredica..
-
람다와 스트림 - java.util.function - part1백엔드/자바 2021. 8. 24. 16:16
이전 람다 파트에선 람다란 무엇인지, 람다의 사용법, 함수형 인터페이스 등에 대해서 배웠다. 다시 한번 간단하게 복습하면 다음과 같다. - 람다식은 익명 객체를 간략하게 만든 표현식이다. - 익명 객체를 사용하려면 함수형 인터페이스가 필요하다. - 함수형 인터페이스를 통해 익명 객체를 사용 할 수 있고, 이때 익명 객체를 람다로 표현이 가능하다. 이제 예제를 보며 함수형 인터페이스와 람다 사용하는 방법을 복습해보자. 만약 두 숫자를 비교하는 기능을 하는 익명 객체를 만들어 사용해보고 싶다면? - 우선 함수형 인터페이스를 작성한다. - 형식에 맞게 람다식을 작성하고 함수형 인터페이스의 참조 변수에 람다식을 저장한다. - 참조 변수이용해서 숫자를 대입한 뒤 실행하여 결과값을 확인한다. 사실 예제가 간단해서 ..
-
람다와 스트림 - 람다식의 활용백엔드/자바 2021. 8. 24. 15:21
람다와 스트림 - 함수형 인터페이스 람다와 익명 객체() 람다와 스트림 - 람다식의 정의 람다식(Lambda Expression)이란? 자바 관련 예제를 보다보면 위와 같은 식을 코드를 볼 수 있다. 메서드들을 체이닝으로 이어준 것인데, 그 중에서 sgcomputer.tistory.com 이전 파트에서 익명 객체를 어떤식으로 만드는지, 그리고 그렇게 만들어진 익명 객체를 어떻게 람다식으로 간략히 표현하는지 알아봤다. 이번 파트에는 람다식을 활용한 다양한 예시를 알아보도록 하자. sort()에서의 람다 사용 위와 같이 String을 요소로 가지는 리스트를 정렬한다고 가정해보자. 이 리스트를 정렬할 때 Collections.sort()를 사용하는데 매개변수로 Comparator를 전달해야 한다. 하지만 위에..
-
람다와 스트림 - 함수형 인터페이스백엔드/자바 2021. 8. 24. 13:25
람다와 익명 객체() 람다와 스트림 - 람다식의 정의 람다식(Lambda Expression)이란? 자바 관련 예제를 보다보면 위와 같은 식을 코드를 볼 수 있다. 메서드들을 체이닝으로 이어준 것인데, 그 중에서도 filter() 메서드 안을 보면 특이한 코드를 볼 수 있 sgcomputer.tistory.com 이전 파트에서 말해듯 람다식의 가장 큰 특징이라하면 이름이 없다는 것을 꼽을 수 있다. 그리고 이름이 없으므로 람다식은 익명 함수라고 한 바 있다. 하지만 엄밀히 말하면 자바에서 람다는 익명 함수가 아닌 익명 객체라 할 수 있다. 왜냐면 자바에서 함수(메서드)는 단독으로 존재할 수 없기 때문이다. 코드로 보면서 설명을 보면 더 이해하기 쉬울 것이다. 왼쪽과 같이 이름이 없는 람다식이 있다고 가정..
-
람다와 스트림 - 람다식의 정의백엔드/자바 2021. 8. 24. 09:00
람다식(Lambda Expression)이란? 자바 관련 예제를 보다보면 위와 같은 식을 코드를 볼 수 있다. 메서드들을 체이닝으로 이어준 것인데, 그 중에서도 filter() 메서드 안을 보면 특이한 코드를 볼 수 있다. 화살표 기호로 무언가 표시해주고, 무언가 많이 생략된 것인데 이것을 람다식이라 부른다. 람다식은 익명함수의 하나로 메서드를 간단하게 하나의 식으로 나타낸 것이다. 참고로 첫번째 체이닝된 메서드들을 풀어서 쓰면 다음과 같다. 붉은 박스 안의 코드가 위에서 붉은 줄로 표시해준 람다식과 동일한 역할을 한다. 이처럼 복잡한 메서드를 만들거나 컬렉션 자료를 다룰 때 람다식을 쓰면 깔끔한 코드 작성이 가능하다. 물론 이러한 람다식도 단점은 있다. 람다는 많은 부분이 생략되어 표현되므로 작업 효율..
-
어노테이션, 애너테이션(Annotation) - 애너테이션 정의하기백엔드/자바 2021. 5. 26. 16:09
어노테이션을 만드는 것은 크게 어렵지 않다. 기본적으로 인터페이스를 정의하는 것과 비슷하다고 생각하면 된다. 그리고 애너테이션의 요소는 추상메서드를 정의하듯이 하면 된다. 애너테이션 선언하기 위와 같이 @interface + 애너테이션명 + 중괄호 { }를 붙여서 정의하면 된다. 우선 위와 같이 정의만 해줘도 애너테이션의 형식은 갖춘 것이다. 실제로 아무 내용이 없는 애너테이션이라도 저렇게 형식만 갖추면 사용이 가능하다. 애너테이션의 요소 추가하기 애너테이션의 요소 추가하는 건 굉장히 쉽다. 인터페이스에서 추상메서드를 추가하듯이 메서드 형식으로 요소들을 추가해주면 된다. 이때 enums()와 testDate()를 보도록 하자. enums()는 열거형 데이터를 타입으로 가지는 요소이며, testDate()..