如何使用Java Stream将Response列表转换为Map<Boolean, List<Response>>
按Response的status分组为Map<Boolean, List>
现有Response类
class Response{ Boolean status; String message; Integer id; Response(Boolean s, String m, Integer id) { status=s; message=m; this.id=id; } public Boolean getStatus() { return status; } public void setStatus(Boolean status) { this.status = status; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } public Integer getId() { return id; } public void setId(Integer id) { // 注意:这里存在变量名冲突问题,正确写法应为 this.id = id; id = id; } }
初始化的Response列表
List<Response> response = new ArrayList<Response>(); response.add(new Response(Boolean.TRUE,"HelloTrue",1)); response.add(new Response(Boolean.FALSE,"HelloFalse",2));
按status分组的实现代码
通过Java Stream的Collectors.groupingBy方法可以直接完成分组需求,代码如下:
Map<Boolean, List<Response>> responsesResult = response.stream() .collect(Collectors.groupingBy(Response::getStatus));
说明
Collectors.groupingBy(Response::getStatus)作为分类器,以每个Response对象的status值作为Map的key- 分组后,Map中会自动生成两个entry:key为
true时对应所有status为TRUE的Response列表,key为false时对应所有status为FALSE的Response列表
内容的提问来源于stack exchange,提问作者Nidhi257
相关产品推荐
相关产品推荐

