spa*_*ron 4 java java-8 java-stream
键入以下代码时,我在groupingBy函数的参数上出现"循环推理"错误:
Map<String, User> mapByEmail = users.stream().collect(Collectors.groupingBy(User::getEmail));
Run Code Online (Sandbox Code Playgroud)
我发现这令人困惑,因为以下不会导致任何问题:
users.stream().collect(Collectors.groupingBy(User::getEmail));
Run Code Online (Sandbox Code Playgroud)
这两个都没有:
List<User> listByEmail = users.stream().collect(Collectors.groupingBy(User::getEmail)).values().stream().reduce(null, (a,b)-> a=b);
Run Code Online (Sandbox Code Playgroud)
所以问题是,什么是循环推理,我该如何避免呢?
编辑感谢您的回答.经过进一步研究后,我发现我需要通过以下方式减少我的结果:
Map<String, User> mapByEmail = users.stream().collect(Collectors.groupingBy(User::getEmail, Collectors.reducing(new User(),(a,b)-> a=b)));
Run Code Online (Sandbox Code Playgroud)
问题是您的结果类型不正确.它应该是Map<String, List<User>>:
Map<String, List<User>> mapByEmail = users.stream()
.collect(Collectors.groupingBy(User::getEmail));
Run Code Online (Sandbox Code Playgroud)
错误消息看起来令人困惑,但代码中确实存在错误.
| 归档时间: |
|
| 查看次数: |
2950 次 |
| 最近记录: |