โข
Lambda Example 1
โฆ
์ธํฐํ์ด์ค
package com.lambda;
@FunctionalInterface
public interface MyInterface {
void action(int x);
}
Java
๋ณต์ฌ
โฆ
code 1
package com.lambda;
public class LambdaExample {
public static void main(String[] args) {
MyInterface mi = new MyInterface() {
@Override
public void action(int x) {
System.out.println("์ซ์ " + x + "์ ํ์ฉํ ๋์");
}
};
mi.action(3); // ๊ฐ์ ๋์
MyInterface li = (x) -> System.out.println("์ซ์ " + x + "์ ํ์ฉํ ๋์");
li.action(3); // ๊ฐ์ ๋์
}
}
Java
๋ณต์ฌ
โฆ
code 2
package com.lambda;
public class LambdaExample2 {
public static void main(String[] args) {
action((x) -> System.out.println("์ซ์ " + x + "์ ํ์ฉํ ๋์"));
}
public static void action(MyInterface mi) {
int x = 3;
mi.action(3);
}
}
Java
๋ณต์ฌ
โข
Lambda Example 2
โฆ
์ธํฐํ์ด์ค
package com.lambda2;
@FunctionalInterface
public interface Calculable {
int calculate(int x, int y);
}
Java
๋ณต์ฌ
โฆ
Calculator.java
package com.lambda2;
import java.util.Scanner;
public class Calculator {
public void calculate(Calculable calc) {
Scanner sc = new Scanner(System.in);
System.out.print("์ซ์๋ฅผ ์
๋ ฅํ์ธ์ -> ");
int x = sc.nextInt();
System.out.print("\n์ซ์๋ฅผ ์
๋ ฅํ์ธ์ -> ");
int y = sc.nextInt();
int result = calc.calculate(x, y);
System.out.println(result);
}
}
Java
๋ณต์ฌ
โฆ
CalculatorExample.java - ๋ํ๊ธฐ, ๋นผ๊ธฐ, ๊ณฑํ๊ธฐ ์ฐ์ฐ์ ๋๋ค์์ผ๋ก ํํ
package com.lambda2;
public class CalculatorExample {
public static void main(String[] args) {
Calculator c = new Calculator();
c.calculate((x, y) -> x + y);
c.calculate((x, y) -> x - y);
c.calculate((x, y) -> x * y);
}
}
Java
๋ณต์ฌ
โข
Lambda Example 3
โฆ
Speakable.java
package com.lambda3;
public interface Speakable {
void speak(String content);
}
Java
๋ณต์ฌ
โฆ
Workable.java
package com.lambda3;
public interface Workable {
void work(String name, String job);
}
Java
๋ณต์ฌ
โฆ
Person.java
package com.lambda3;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public class Person {
private String name, job, nation;
public void action1(Workable workable) {
workable.work(name, job);
}
public void action2(Speakable speakable) {
speakable.speak(nation);
}
}
Java
๋ณต์ฌ
โฆ
PersonExample
package com.lambda3;
public class PersonExample {
public static void main(String[] args) {
Person minsung = new Person("๊น๋ฏผ์ฑ", "ํ๋ก๊ทธ๋๋จธ", "๋ํ๋ฏผ๊ตญ");
// ๊ฐ์ Person์์๋ ๋ค๋ฅธ ์ก์
์ ์ทจํ๋๋ก ๋ง๋ค ์ ์๋ค.
minsung.action1(((name, job) -> {
System.out.println("์๋
ํ์ธ์, ์ ์ด๋ฆ์ " + name + "์
๋๋ค.");
System.out.println("์ ์ง์
์ " + job + "์
๋๋ค.");
}));
minsung.action2(content -> {
if (minsung.getNation().equals("๋ํ๋ฏผ๊ตญ")) {
System.out.println("์๋
ํ์ธ์!");
} else {
System.out.println("Hello World!");
}
});
minsung.action2(System.out::println); // ๋ํ๋ฏผ๊ตญ ์ถ๋ ฅ
}
}
Java
๋ณต์ฌ
โข
Lambda Example 4
โฆ
AgeComparator
package com.lambda4;
import java.util.Comparator;
public class AgeComparator implements Comparator<Person> {
@Override
public int compare(Person o1, Person o2) {
return o1.getAge() - o2.getAge();
}
}
Java
๋ณต์ฌ
โฆ
Person.java
package com.lambda4;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.ToString;
@AllArgsConstructor
@Getter
@ToString
public class Person {
private String name;
private int age;
// @Override
// public int compareTo(Person o) {
//// return Integer.valueOf(age).compareTo(o.getAge()); // ์ฒซ๋ฒ์งธ ๋ฐฉ๋ฒ
// if (age < o.getAge()) {
// return -1;
// } else if (age == o.getAge()) {
// return 0;
// } else {
// return 1;
// }
// }
}
Java
๋ณต์ฌ
โฆ
PersonExample
package com.lambda4;
import java.util.Comparator;
import java.util.TreeSet;
public class PersonExample {
public static void main(String[] args) {
// '๊ถ์งํ', '๊นํํ', '์ฑ์ ํ'
// TreeSet<Person> treeSet = new TreeSet<Person>(new Comparator<Person>() {
// @Override
// public int compare(Person o1, Person o2) {
// return o1.getAge() - o2.getAge();
// }
// });
// TreeSet<Person> treeSet = new TreeSet<Person>((o1, o2) -> o2.getAge() - o1.getAge());
// ๋ฉ์๋ ์ฐธ์กฐ ํ์ฉ - ์์ ๋์๊ณผ ๊ฐ์
TreeSet<Person> treeSet = new TreeSet<Person>(
Comparator.comparingInt(Person::getAge)
);
// TreeSet<Person> treeSet = new TreeSet<Person>(
// Comparator.comparingInt(Person::getAge)
// .thenComparing((o1, o2) -> o1.getName().compareTo(o2.getName()))
// );
treeSet.add(new Person("๊ถ์งํ", 7));
treeSet.add(new Person("๊นํํ", 8));
treeSet.add(new Person("์ฑ์ ํ", 6));
System.out.println(treeSet);
}
}
Java
๋ณต์ฌ
โข
Lambda Example 5
โฆ
Calculable.java
package com.lambda5;
@FunctionalInterface
public interface Calculable {
double calc(double x, double y);
}
Java
๋ณต์ฌ
โฆ
Person.java
package com.lambda5;
public class Person {
public void action(Calculable c) {
double result = c.calc(10, 4);
System.out.println("๊ฒฐ๊ณผ : " + result);
}
}
Java
๋ณต์ฌ
โฆ
CalculateService.java
package com.lambda5;
// ์๋น์ค ๋ก์ง๋ง ๋ฐ๋ก ๊ตฌํ
public class CalculateService {
public static double sum(double x, double y) {
return x + y;
}
public static double multiply(double x, double y) {
return x * y;
}
}
Java
๋ณต์ฌ
โฆ
MethodReferenceExample
package com.lambda5;
public class MethodReferenceExample {
public static void main(String[] args) {
Person p = new Person();
// p.action(์ธํฐํ์ด์ค); -> ์ธํฐํ์ด์ค์ ๋ฉ์๋ calc(10, 4) ํธ์ถ -> ๊ทธ ๊ฒฐ๊ณผ ์ถ๋ ฅ
// ์ถ์ ๋ฉ์๋ [double calc(double x, double y)]
p.action((x, y) -> CalculateService.sum(x, y));
p.action(CalculateService::sum); // ์ ์ฝ๋์ ๋์ ๊ฐ์
p.action((x, y) -> CalculateService.multiply(x, y));
p.action(CalculateService::multiply); // ์ ์ฝ๋์ ๋์ ๊ฐ์
}
}
Java
๋ณต์ฌ




