tôi muốn đếm các yếu tố khác nhau của một dòng suối và đang tự hỏi tại saoyếu tố đếm của một Stream
Stream<String> stream = Stream.of("a", "b", "a", "c", "c", "a", "a", "d");
Map<String, Integer> counter1 = stream.collect(Collectors.toMap(s -> s, 1, Integer::sum));
không hoạt động. Eclipse nói với tôi
Phương pháp toMap (Function, Function, BinaryOperator) trong thu gom loại không áp dụng cho các đối số ((s) -> {}, int, Integer :: tổng hợp)
Bằng cách này, tôi biết về giải pháp mà:
Map<String, Long> counter2 = stream.collect(Collectors.groupingBy(s -> s, Collectors.counting()));
Vì vậy, tôi có hai câu hỏi:
- là gì thứ e sai lầm trong cách tiếp cận đầu tiên của tôi?
- Bạn sẽ thực hiện bộ đếm như thế nào?
EDIT: tôi đã giải quyết được câu hỏi đầu tiên của bản thân mình:
Map<String, Integer> counter1 = stream.collect(Collectors.toMap(s -> s, s -> 1, Integer::sum));
Java được mong đợi một chức năng như là đối số thứ hai.
Nếu bạn tự giải quyết câu hỏi, chỉ cần viết câu trả lời thay vì chỉnh sửa câu hỏi. –
@TagirValeev Nó chỉ là phần đầu tiên. Không phải là câu trả lời phải trả lời câu hỏi đầy đủ sao? Tôi cũng muốn mọi người không còn quan tâm đến việc nói cho tôi biết tôi đã làm gì sai. –
http://stackoverflow.com/questions/25441088/group-by-counting-in-java8-stream-api –