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;
});
}
}
์ฐธ๊ณ :