[JAVA] Lamda ννμ μμ
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