javascript 함수형 프로그래밍을 스터디 후 java버전 메소드 몇개 작성.
public static <T> List<T> filter(Predicate<T> predi, List<T> list) {
if(list==null) return null;
List<T> result = new ArrayList<T>();
list.forEach(value->{
if(predi.test(value)) result.add(value);
});
return result;
}
public static <T, R> List<R> map(Function<T, R> f, List<T> list) {
if(list==null) return null;
List<R> result = new ArrayList<R>();
list.forEach(value->{
result.add(f.apply(value));
});
return result;
}
public static <T> T reduce(BiFunction<T, T, T> f, T initValue, List<T> list){
if(list==null || list.size()==0) return initValue;
for(T value : list) {
initValue = f.apply(initValue, value);
}
return initValue;
}
public static <T> T reduce(BiFunction<T, T, T> f, List<T> list){
if(list==null || list.size()==0) return null;
T initValue = list.get(0);
list = list.subList(1, list.size());
return reduce(f, initValue, list);
}
public <T1, T2, R> Function<T1, Function<T2, R>> curry(BiFunction<T1, T2, R> f) {
return (T1 a) -> (T2 b) -> f.apply(a, b);
}
'Back-End > Java' 카테고리의 다른 글
[TDD] Mockito (0) | 2020.05.08 |
---|---|
JAVA 자소 분리된 단어 합치기 (2) | 2020.04.30 |
함수형 JAVA코딩01 (0) | 2019.06.06 |
Apache Tomcat CORS설정 (1) | 2018.02.04 |
[Jasypt] properties파일 암호화 (0) | 2015.05.19 |