Backend
////////
home
๐Ÿ“

Lambda

โ€ข
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
๋ณต์‚ฌ