假设我有以下响应类,它收集响应和一些其他数据。
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) {
id = id;
}
}
列出数据如下:
List<Response> response = new ArrayList<Response>();
response.add(new Response(Boolean.TRUE,"HelloTrue",1));
response.add(new Response(Boolean.FALSE,"HelloFalse",2));
我希望使用单个stream()方法根据状态类型(TRUE,FALSE)将结果作为两个不同的列表。 例如:
Map<Boolean,List<Response>> responsesResult=response.stream().....
提前致谢。
您可以使用
Collectors.partitioningBy
方法根据状态值将响应列表拆分为两个列表。此方法采用谓词作为参数,并返回带有两个键的映射:true 和 false。映射的值是满足或不满足谓词的元素列表。例如,您可以写:
Map
这将创建一个包含两个条目的映射:一个条目的键为 true,值为 true 的响应列表,另一个条目的键为 false,值为 false 的响应列表。然后,您可以使用地图键访问列表:
列表 trueResponses =responseResult.get(true); 列表 falseResponses =responseResult.get(false);
我希望这可以帮助您了解如何使用
Collectors.partitioningBy
方法。 😊