【问题标题】:Dynamic Search of a Response through Streams通过流动态搜索响应
【发布时间】:2022-08-20 21:52:00
【问题描述】:

我的 API 有以下响应:

[
 {
  \"country\":\"INDIA\",
  \"region\": \"Asia\",
  \"doorNo\": \"12\",
  \"pinCode\": \"345\"
 }, 
 {
  \"country\":\"Angolia\",
  \"region\": \"Asia\",
  \"doorNo\": \"13\",
  \"pinCode\": \"789\"
 }, 
 {
  \"country\":\"Nigeria\",
  \"region\": \"Australia\",
  \"doorNo\": \"15\",
  \"pinCode\": \"947\"
 }
]

我必须按国家和地区动态搜索此响应。 例如,当我搜索 [country: INDIA, region: Asia] 时,我希望得到以下结果:

{
  \"country\":\"INDIA\",
  \"region\": \"Asia\",
  \"doorNo\": \"12\",
  \"pinCode\": \"345\"
 }

但是,我得到以下结果(\'或者\' 条件而不是 \'\'):

{
  \"country\":\"INDIA\",
  \"region\": \"Asia\",
  \"doorNo\": \"12\",
  \"pinCode\": \"345\"
 }, 
 {
  \"country\":\"Angolia\",
  \"region\": \"Asia\",
  \"doorNo\": \"13\",
  \"pinCode\": \"789\"
 },

有什么方法可以通过流来实现这一点。

我尝试过以下方法:

response=response.stream().filter(x-> x.getCountry().equals(country) ||
         x.getRegion().equls(region) || x.getDoorNo().equals(doorNo) ||
         x.getPinCode().equals(pinCode));

当搜索输入为[countryName=India, region=Asia] 时,我得到以下结果:

{ \"country\":\"INDIA\", \"region\": \"Asia\", \"doorNo\": \"12\", \"pinCode\": \"345\" }, 
{ \"country\":\"Angolia\", \"region\": \"Asia\", \"doorNo\": \"13\", \"pinCode\": \"789\" }

但是,我期望的结果是:

{ \"country\":\"INDIA\", \"region\": \"Asia\", \"doorNo\": \"12\", \"pinCode\": \"345\" }
  • 有没有办法让给定的任何输入的响应完全匹配。而不是具有 or 条件
  • I am having the below as result - 您发布的代码无法产生任何结果,因为它无法编译。分享您正在运行的实际代码,请参阅stackoverflow.com/help/minimal-reproducible-example
  • 你能建议我一种通过流获得预期结果的方法吗
  • 等等,从你发布的 sn-p 中甚至不清楚response 应该是什么。在分配的右侧,您有一个Stream,因为stream().filter() 产生一个流。请分享我们可以复制到 ide 并运行的代码。
  • 还提供一个虚拟class,它反映流中对象的形状。

标签: java-8 java-stream


【解决方案1】:
response
.stream()
.filter(x -> (x.getCountry().equals(country) && x.getRegion().equals(region)));

使用特定条件,或者您可以使用多个过滤器,

response
.stream()
.filter(x -> (x.getCountry().equals(country)))
.filter(x.getRegion().equals(region) || x.getDoorNo().equals(doorNo) || x.getPinCode().equals(pinCode));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-02
    • 2018-09-17
    • 2019-07-31
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    • 1970-01-01
    相关资源
    最近更新 更多