이 프로젝트는 함수형 프로그래밍을 연습합니다.
- 기존 코드를 함수형으로 변경하고 코드양을 줄인다.
public Set factors() {
HashSet factors = new HashSet<>();
for (int pod=1; pod <= Math.sqrt(number); pod++) {
if (isFactor(pod)) {
factors.add(pod);
factors.add(number / pod);
}
}
return factors;
}
// -> 스트림 & 람다 변경
public Set factors() {
Set<Integer> factors = IntStream.rangeClosed(1, (int) Math.sqrt(number))
.filter((i) -> number % i == 0)
.mapToObj((i) -> List.of(i, number / i))
.collect(HashSet::new, HashSet::addAll, HashSet::addAll);
return factors;
}
static public int sum(Set factors) {
Iterator iterator = factors.iterator();
int sum = 0;
while (iterator.hasNext()) {
sum += (Integer) iterator.next();
}
return sum;
}
// -> 스트림 & 람다 변경
static public int sum(Set factors) {
return factors.stream().mapToInt(i-> (int) i).sum();
}
- map, filter, reduce를 활용한다. (구현 X)