web developer๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป

[JAVA] Lamda ํ‘œํ˜„์‹ ์˜ˆ์ œ ๋ณธ๋ฌธ

Spring

[JAVA] Lamda ํ‘œํ˜„์‹ ์˜ˆ์ œ

natrue 2021. 8. 27. 15:09
728x90

 Lamda ํ‘œํ˜„์‹

  • ๋žŒ๋‹ค์‹์€ JAVA 8์— ๋„์ž…๋œ ํ•จ์ˆ˜(๋ฉ”์„œ๋“œ)๋ฅผ ๊ฐ„๋‹จํ•œ ์‹์œผ๋กœ ํ‘œํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์ต๋ช… ํ•จ์ˆ˜(anonymous function)๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์‹์ด๋‹ค.
  • ๊ฐ์ฒด ์ง€ํ–ฅ ์–ธ์–ด๋ณด๋‹ค๋Š” ํ•จ์ˆ˜ ์ง€ํ–ฅ ์–ธ์–ด์— ๊ฐ€๊น๋‹ค. 

 

<ํ•จ์ˆ˜์™€ ๋ฉ”์„œ๋“œ์˜ ์ฐจ์ด>

ํ•จ์ˆ˜ ๋ฉ”์„œ๋“œ
ํด๋ž˜์Šค์— ๋…๋ฆฝ์  ํด๋ž˜์Šค์— ์ข…์†์ 
์ผ๋ฐ˜์ ์ธ ์šฉ์–ด ๊ฐ์ฒด์ง€ํ–ฅ ๊ฐœ๋… ์šฉ์–ด

 

 Lamda์‹ ๊ธฐ๋ณธ ์ž‘์„ฑ ๋ฐฉ๋ฒ• 

(์ธ์ˆ˜) -> {์ฒ˜๋ฆฌ}
()-> {์ฒ˜๋ฆฌ}
(์ธ์ˆ˜) -> ์ฒ˜๋ฆฌ
(์ธ์ˆ˜) -> {return 0;}
int max(int a, int b) {
	retrun a > b ? a : b; 
}

๋ฉ”์„œ๋“œ์˜ ์ด๋ฆ„๊ณผ ๋ฐ˜ํ™˜ ํƒ€์ž…์„ ์ œ๊ฑฐ ํ›„ ' -> ' ์ถ”๊ฐ€

(a, b) -> a > b ? a : b

 

 List์—์„œ Lamda์‚ฌ์šฉ 

Java 7 ์ดํ•˜ : for๋ฌธ ์‚ฌ์šฉ

List<Map<String, Object>> list = ...service.select..(map); 
for (Map<String, Object> string : list) {
  System.out.println( "string :: " + string);
}

Java 8 ์ด์ƒ : Lambda ์‚ฌ์šฉ

List<Map<String, Object>> list = ...service.select..(map); 
list.forEach(string -> System.out.println( "string :: " + string));

๋™์ผํ•œ ๊ฒฐ๊ณผ

string :: {SEQNUM=1, APP_NAM=ํŠธ๋ฃจ์ฝ”๋”ฉ1, IST_YMD=20200101} 
string :: {SEQNUM=2, APP_NAM=ํŠธ๋ฃจ์ฝ”๋”ฉ2, IST_YMD=20200102} 
string :: {SEQNUM=3, APP_NAM=ํŠธ๋ฃจ์ฝ”๋”ฉ3, IST_YMD=20200103} 
string :: {SEQNUM=4, APP_NAM=ํŠธ๋ฃจ์ฝ”๋”ฉ4, IST_YMD=20200104}

 - Lambda ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•ด์ง€๊ณ , ์˜๋„๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ๋“œ๋Ÿฌ๋‚˜ ๊ฐ€๋…์„ฑ์ด ๋†’์•„์ง„๋‹ค.

 

 ๋ฐฐ์—ด์—์„œ Lamda์‚ฌ์šฉ 

String[] stringArray = { "truena", "truema", "trueda" }; 
Arrays.asList(stringArray).forEach(string -> System.out.println(string));

 

 map์—์„œ Lamda์‚ฌ์šฉ 

Java 7 ์ดํ•˜ : for๋ฌธ ์‚ฌ์šฉ

HashMap<String, Object> doc = new HashMap<String, Object>(); 
 doc.put("name", "true"); 
 doc.put("age", "27")); 

for(Entry<String, Object> entry : doc.entrySet()) { 
 System.out.println(" mapKey ::" + entry.getKey());
 System.out.println(" mapValue ::" + entry.getValue()); 
}

Java 8 ์ด์ƒ : Lambda ์‚ฌ์šฉ

HashMap<String, Object> doc = new HashMap<String, Object>(); 
 doc.put("name", "true"); 
 doc.put("age", "27")); 

doc.forEach((key, value) -> { 
 System.out.println(" mapKey ::" + key); 
 System.out.println(" mapValue ::" + value); 
});

๋™์ผํ•œ ๊ฒฐ๊ณผ

mapKey :: name 
mapValue :: true 
mapKey :: age 
mapValue :: 27

 

 Lamda ์žฅ/๋‹จ์  

 ์žฅ์   ๋‹จ์ 
 ์ฝ”๋“œ๊ฐ€ ๊ฐ„๊ฒฐํ•ด์ง„๋‹ค.  Lamda๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด์„œ ๋งŒ๋“  ๋ฌด๋ช…ํ•จ์ˆ˜๋Š” ์žฌ์‚ฌ์šฉ ๋ถˆ๊ฐ€
 ์˜๋„๊ฐ€ ๋ช…ํ™•ํžˆ ๋“œ๋Ÿฌ๋‚˜ ๊ฐ€๋…์„ฑ ํ–ฅ์ƒ  ๋””๋ฒ„๊น…์ด ๊นŒ๋‹ค๋กญ๋‹ค.
 ์ฝ”๋”ฉ ์‹œ๊ฐ„์˜ ๋‹จ์ถ•  ๋น„์Šทํ•œ ํ•จ์ˆ˜๋ฅผ ๊ณ„์† ์ค‘๋ณต ์ƒ์„ฑํ•  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„ 
 ์ฝ”๋“œ๊ฐ€ ์ง€์ €๋ถ„ํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.
 ๋ณ‘๋ ฌ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ์šฉ์ด  ์žฌ๊ท€๋กœ ๋งŒ๋“ค๊ฒฝ์šฐ๋Š” ๋ถ€์ ํ•ฉํ•œ๋ฉด์ด ์žˆ๋‹ค.

 

 ** ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค Lamda ํ‘œํ˜„์‹ ๋ฌธ๋ฒ• ์˜ˆ์ œ  

/* ๋‘๊ฐœ์˜ ์ˆซ์ž ๋”ํ•˜๊ธฐ */

@FunctionalInterface // ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋งŒ ๊ฐ€์ ธ์•ผํ•œ๋‹ค.
interface Compare{
    public int compareTo(int a, int b);
}

public class Ramda2 {
    public static void exec(Compare com) {
      int k = 10;
      int m = 20;
    
      // ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค
      int value = com.compareTo(k, m);
      System.out.println(value);
    }
    
    public static void main(String[] args) { 
      //๋žŒ๋‹ค์‹ ๋ฌธ๋ฒ• (๋งค๊ฐœ๋ณ€์ˆ˜ ๋ชฉ๋ก)->{์‹คํ–‰๋ฌธ}
      exec((i,j)->{
       return i+j;
      });
    }
}

 































์ฐธ๊ณ  : 

 

[Java] ๋žŒ๋‹ค์‹(Lambda Expressions) -> ์‚ฌ์šฉ๋ฒ• & ์˜ˆ์ œ

 ๋žŒ๋‹ค์‹์ด๋ž€? ๋žŒ๋‹ค์‹์ด๋ž€ "์‹๋ณ„์ž์—†์ด ์‹คํ–‰๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜" ํ•จ์ˆ˜์ธ๋ฐ ํ•จ์ˆ˜๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ์ฝ”๋“œํ•œ์ค„์— ํ•จ์ˆ˜๋ฅผ ์จ์„œ ๊ทธ๊ฒƒ์„ ํ˜ธ์ถœํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์‹œ๋ฉด ๋˜๊ฒ ์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„

coding-factory.tistory.com

 

ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ ์ง€์‹ ๊ณต์œ , devkuma

๋ฐ๋ธŒ์ฟ ๋งˆ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋ฐœ์— ๋Œ€ํ•œ ์ง€์‹์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

www.devkuma.com

 

[Java] ๋žŒ๋‹ค์‹(Lambda Expression)๊ณผ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค(Functional Interface) (2/5)

1. ๋žŒ๋‹ค์‹(Lambda Expression) ์ด๋ž€? Stream ์—ฐ์‚ฐ๋“ค์€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค(Functional Interface)๋ฅผ ๋ฐ›๋„๋ก ๋˜์–ด์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋žŒ๋‹ค์‹์€ ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ํ•จ์ˆ˜ํ˜• ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ

mangkyu.tistory.com