<aside> 📌 distinct() 메소드
</aside>
distinct()
외에도 여러 가지 메소드를 제공한다. 이들 메소드는 스트림의 요소를 필터링하거나 변환하는 데 사용된다. distinct()
메소드는 스트림의 요소를 필터링하여 중복된 요소를 제거한다.distinct()
메소드를 사용하는 예제이다.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]
distinct()
메소드를 사용하여 중복된 도시를 제거하는 전체 코드이다. 코드에는 각 단계를 설명하는 주석이 포함되어 있다.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>
BinaryOperator
**다.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);
}
}
reduce()
메소드를 사용하여 사용자의 나이를 합산한다. reduce()
메소드는 두 개의 인자를 받는다. 첫 번째 인자는 초기값이며, 이 예제에서는 0이다. 두 번째 인자는 두 값을 합산하는 함수이다. 이 예제에서는 **Integer::sum
**을 사용하여 두 나이를 합산한다.reduce()
메소드는 스트림의 모든 요소를 처리한 후 최종 결과를 반환한다. 이 예제에서는 모든 사용자의 나이를 합산한 결과를 반환한다.<aside> 📌 collect() 메소드
</aside>
collect()
메소드는 스트림의 요소를 수집하는 데 사용된다. 이 메소드는 종종 Collectors
클래스의 메소드와 함께 사용되어, 스트림의 요소를 List, Set, Map 등의 컬렉션으로 수집하거나, 스트림의 요소를 합산, 평균, 최대, 최소 등의 요약 통계를 계산하는 데 사용된다.