<aside> 📌 distinct() 메소드

</aside>

List<String> list = Arrays.asList("A", "B", "C", "D", "A", "B", "C");

List<String> distinctElements = list.stream()
                        .distinct()
                        .collect(Collectors.toList());    // 결과: [A, B, C, D]
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.stream.Collectors;

@Service
public class UserService {

    @Autowired
    private UserRepository userRepository;

    public List<String> getDistinctCities() {
        // UserRepository에서 모든 사용자를 가져온 후, 각 사용자의 도시를 스트림으로 만들고,
        // distinct() 메소드를 사용하여 중복된 도시를 제거하고, 스트림을 리스트로 변환하여 중복이 제거된 도시 목록을 반환합니다.
        return userRepository.findAll().stream()
            .map(User::getCity)
            .distinct()
            .collect(Collectors.toList());
    }
}

<aside> 📌 reduce() 메소드

</aside>

OptionalInt reduced = IntStream.range(1, 4).reduce((a, b) -> a + b);
@AllArgsConstructor
@Getter
class User {
    private String name;
    private int age;
}
import java.util.Arrays;
import java.util.List;

public class Main {
    public static void main(String[] args) {

        List<User> users = Arrays.asList(
                new User("John", 30),
                new User("Julie", 35),
                new User("Steve", 40),
                new User("Emily", 25)
        );

        // reduce() 메소드를 사용하여 사용자의 나이를 합산합니다.
        // 초기값으로 0을 설정하고, 각 사용자의 나이를 더합니다.
        int totalAge = users.stream()
                .map(User::getAge)
                .reduce(0, Integer::sum);

        System.out.println("Total age: " + totalAge);
    }
}

<aside> 📌 collect() 메소드

</aside>