상용 함수식 인터페이스
상용 함수식 인터페이스
Supplier - 프로덕션 인터페이스
package cn.learn;
import java.util.function.Supplier;
public class function {
// , Supplier<> , String.get String
public static String getString(Supplier stringSupplier){
return stringSupplier.get();
}
public static void main(String[] args) {
// getString , , lambda
String str = getString(() ->{
// ,
return "aaa";
});
System.out.println(str);
// Lambda
str = getString(() -> "aaa");
System.out.println(str);
}
}
연습:배열 요소 최대값 구하기
package cn.learn;
import java.util.function.Supplier;
public class function {
public static Integer getMax(Supplier stringSupplier){
return stringSupplier.get();
}
public static void main(String[] args) {
//
int[] arr = new int[]{3,55,66,77,88,-5};
// getMax , Lambda
int integermax = getMax(() ->{
//
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (max < arr[i]){
max = arr[i];
}
}
return max;
});
/******
// getMax
getMax(new Supplier() {
@Override
public Integer get() {
//
int max = arr[0];
for (int i = 1; i < arr.length; i++) {
if (max < arr[i]) {
max = arr[i];
}
}
return max;
}
});
*******/
System.out.println(integermax);
}
}
Consumer - 소비자용 커넥터
package cn.learn;
import java.util.function.Consumer;
public class function {
//accept 、
public static void print(Integer year,Consumer age){
age.accept(year);
}
public static void main(String[] args) {
// :
print(2018,(year) -> System.out.println(" "+year));
// :
print(2018,(year) -> {
String string = year.toString();
String re = new StringBuilder(string).reverse().toString();
System.out.println(re);
});
}
}
default Consumer andThen(Consumer super T> after) {
Objects.requireNonNull(after);
return (T t) -> { accept(t); after.accept(t); };
}
주:java.util.Object의 Require Nonnull 정적 방법은 파라미터가null일 때 자발적으로 NullPointer Exception 이상을 던집니다.if문장을 작성하고 빈 바늘을 던질 때의 번거로움을 줄일 수 있습니다.
package cn.learn;
import java.util.function.Consumer;
public class function {
// Consumer ,
public static void method(String str,Consumer con1,Consumer con2){
//
con1.accept(str);
con2.accept(str);
}
public static void main(String[] args) {
// , method , Lambda
method("Hello",(str) -> {
// :
System.out.println(str.toUpperCase());
},(str) ->{
// :
System.out.println(str.toLowerCase());
});
}
}
package cn.learn;
import java.util.function.Consumer;
public class function {
//andThen Consumer , Consumer ,
public static void method(String str,Consumer con1,Consumer con2){
// con1 , con2
con1.andThen(con2).accept(str);
}
public static void main(String[] args) {
// , method , Lambda
method("Hello",(str) -> {
// :
System.out.println(str.toUpperCase());
},(str) ->{
// :
System.out.println(str.toLowerCase());
});
}
}
연습:인쇄 정보 서식 적용
package cn.learn;
import java.util.function.Consumer;
public class function {
// Consumer ,
public static void method(String[] str,Consumer con1,Consumer con2){
// con1 , con2
con1.andThen(con2).accept(str);
}
public static void main(String[] args) {
//
String[] person ={" , "," , "};
// , method , Lambda
method(person,(str) -> {
// :
for (String name:str) {
//
System.out.println(name.split(",")[0]);
}
},(str) ->{
// :
for (String name:str) {
//
System.out.println(name.split(",")[1]);
}
});
}
}
결과: 왕 군 남녀
package cn.learn;
import java.util.function.Consumer;
public class function {
// Consumer ,
public static void method(String[] str,Consumer con1,Consumer con2){
// ,
for (String message:str) {
// con1 , con2
con1.andThen(con2).accept(message);
}
}
public static void main(String[] args) {
//
String[] person ={" , "," , "};
// , method , Lambda
method(person,(message) -> {
// :
System.out.println(message.split(",")[0]);
},(message) ->{
// :
System.out.println(message.split(",")[1]);
});
}
}
결과: 왕 군 남 왕 녀
Predicate - 판단 인터페이스
import java.util.function.Predicate;
public class function {//public static boolean checkMethod(String str, Predicate pre){ return pre.test(str); }
public static void main(String[] args) {
String str = "hello";
//
boolean check = checkMethod(str,(String str01) ->{
return str01.length()>5;
});
boolean check1 = checkMethod(str,str01 -> str01.length()>3);
System.out.println(check);
System.out.println(check1);
}
}
package cn.learn;
import java.util.function.Predicate;
public class function {
//
public static boolean checkMethod(String str, Predicate pre1, Predicate pre2){
// return pre1.test(str) && pre2.test(str);
return pre1.and(pre2).test(str);
}
public static void main(String[] args) {
String str = "hello";
//
boolean check = checkMethod(str,(String str01) ->{
return str01.length()>3;
},(str01) ->{
return str01.contains("1");
});
System.out.println(check);
}
}
false
package cn.learn;
import java.util.function.Predicate;
public class function {
//
public static boolean checkMethod(String str, Predicate pre1, Predicate pre2){
// return pre1.test(str) || pre2.test(str);
return pre1.or(pre2).test(str);
}
public static void main(String[] args) {
String str = "hello";
//
boolean check = checkMethod(str,(String str01) ->{
return str01.length()>3;
},(str01) ->{
return str01.contains("1");
});
System.out.println(check);
}
}
true
package cn.learn;
import java.util.function.Predicate;
public class function {
//
public static boolean checkMethod(String str, Predicate pre1){
// return !pre1.test(str);
return pre1.negate().test(str);
}
public static void main(String[] args) {
String str = "hello";
//
boolean check = checkMethod(str,(String str01) ->{
return str01.length()>3;
});
System.out.println(check);
}
}
false
연습:컬렉션 정보 필터링
package cn.learn;
import java.util.ArrayList;
import java.util.function.Predicate;
public class function {
public static ArrayList filter(String[] str, Predicate pre1, Predicate pre2) {
// ,
ArrayList correct = new ArrayList<>();
//
for (String message : str) {
boolean ifCorr = pre1.and(pre2).test(message);
//
if (ifCorr) {
correct.add(message);
}
}
return correct;
}
public static void main(String[] args) {
String[] str = {" , ", " , ", " , ", " , "};
// ,
ArrayList list = filter(str, (String str01) -> {
return str01.split(",")[0].length() == 2;
}, (str01) -> str01.split(",")[1].equals(" ") );
System.out.println(list);
}
}
[왕 군, 녀]
Function - 데이터 유형 변환 인터페이스
package cn.learn;
import java.util.function.Function;
public class function {
public static Integer convert(String str, Function function){
// Integer
return function.apply(str);
}
public static void main(String[] args) {
String str = "2018";
// convert , Lambda apply
Integer strInt = convert(str,(String str01) ->{
return Integer.parseInt(str01);
});
System.out.println(strInt);
}
}
package cn.learn;
import java.util.function.Function;
public class function {
public static String convert(String str, Function fun1,Function fun2){
// String
return fun1.andThen(fun2).apply(str);
}
public static void main(String[] args) {
String str = "2018";
// convert , , String
str = convert(str,str01 ->Integer.parseInt(str01)+10,int01 -> int01.toString());
System.out.println(str);
}
}
2028
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.