ランダの様々な表現
Ramdaとの関数インタフェース
関数インタフェース?
ランダ?
状況。
import java.util.ArrayList;
import java.util.Collections;
class SLenComp implements Comparable<String> {
@Override
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
}
class SLenComparator {
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("Robot");
list.add("Lambda");
list.add("Box");
Collections.sort(list, new SLenComp());
/** 오른쪽 매개변수인 new SLenComp()에는 기능(메소드) 하나만이 들어간다. **/
for(String s : list)
System.out.println(s);
}
}
ランダの様々な表現
1.パラメータがあり、返さないram式
Printable p;
p = (String s) -> {System.out.println(s); }; // 줄이지 않고 쓴 표현
p = (String s) -> System.out.println(s); // 중괄호를 생략한 표현
p = (s) -> System.out.println(s); // 매개변수 타입 생략
p = s -> System.out.println(s); // 매개변수 소괄호 생략
Printable p;
p = (String s) -> {System.out.println(s); }; // 줄이지 않고 쓴 표현
p = (String s) -> System.out.println(s); // 중괄호를 생략한 표현
p = (s) -> System.out.println(s); // 매개변수 타입 생략
p = s -> System.out.println(s); // 매개변수 소괄호 생략
2つのパラメータがあれば?
interface Calculate{
void cal(int a, int b);
}
public static void main(String[] args) {
Calculate c;
c = (a, b) -> {System.out.println( a + b );}; // 람다식으로 덧셈 기능 지정
c.cal(4, 3);
c = (a, b) -> {System.out.println( a - b );}; // 람다식으로 뺄셈 기능 지정
c.cal(4, 3);
}
2.パラメータ付きで返されるram多項式
interface Calculate{
int cal(int a, int b); // 인터페이스에 값을 반환하는 추상 메소드가 있다.
}
public static void main(String[] args) {
Calculate c;
c = (a, b) -> { return a + b; }; // return 문이 있을 경우 -> 중괄호 필요
System.out.println(c.cal(a, b));
c = (a, b) -> a + b; // 연산 값만 남을 경우 -> return 필요X, 중괄호 안 써도 된다.
System.out.println(c.cal(a, b));
}
パラメータ付きで返されるramdasize 2
interface HowLong{
int len(String s);
}
public static void main(String[] args) {
HowLong h1 = s -> s.length();
System.out.println(h1.len("I am so happy"));
}
したがって、カッコは使いません.
3.パラメータのないRam多項式
import java.util.Random;
interface Generate {
int rand();
}
public static void main(String[] args) {
Generate gen = () -> {
Random rand = new Random();
return rand.nextInt(50);
};
System.out.println(gen.rand());
}
パラメータがないことを4.ランダ食品とジェニーリック
@FunctionalInterface
interface Calculate <T>{
T cal(T a, T b);
}
public static void main(String[] args) {
// Culculate<Integer>로 인터페이스의 T를 Integer로 결정했다.
Calculate<Integer> ci = (a, b) -> a + b;
System.out.println(ci.cal(4, 3));
}
[ソース]Reference
この問題について(ランダの様々な表現), 我々は、より多くの情報をここで見つけました https://velog.io/@songyw0517/람다의-여러가지-표현식テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol