람다식 활용
package ex3_function;
import java.util.ArrayList;
public class Ex1_function {
public static void main(String[] args) {
ArrayList<Integer> list = new ArrayList<>();
for(int i=1; i<=10; i++)
list.add(i);
list.removeIf(x -> x%2==0); //요소가 2의 배수이면 remove한다
System.out.println(list);
}
}
package ex3_function;
import java.util.HashMap;
public class Ex2_function {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<>();
map.put("id1", "이름1");
map.put("id2", "이름2");
map.put("id3", "이름3");
map.put("id4", "이름4");
map.put("id5", "이름5");
//compute() : Map의 value값을 업데이트할 때 사용하는 메서드
map.forEach((key, value) -> map.compute(key,(k, v) -> v+"**"));
//value값 뒤에 ** 추가
map.forEach((key, value) -> System.out.printf("key = %s, value = %s\n", key, value));
}
}
package ex3_function;
import java.util.function.Function;
public class Ex3_function {
public static void main(String[] args) {
//function의 합성
//두 람다식을 합성해서 새로운 람다식을 만들 수 잇다
//f.andThen(g) -> f를 먼저 적용하고 g를 적용한다
//f.compose(g) -> g를 먼저 적용하고 f를 적용한다
Function<String, Integer> f = s -> Integer.parseInt(s,16);
System.out.println(f.apply("FF"));
Function<Integer, String> g = i -> Integer.toBinaryString(i);
System.out.println(g.apply(255));
Function<String, String> h = f.andThen(g); // FF -> 255 -> 11111111
System.out.println(h.apply("FF"));
Function<Integer, Integer> h2 = f.compose(g);
System.out.println(h2.apply(2)); // 2 -> 10 -> 16
}
}