繁体   English   中英

根据属性值spring boot从列表中过滤对象

[英]Filter object from list based on property value spring boot

我有一个休息服务,将返回对象List

public class MyObject {
    private String name;
    private String state;
}

现在,我需要根据其余调用中提供的字段从列表中过滤对象:

http://localhost:8080/myuri?state=NY

现在,我需要开发自定义过滤器,我只找到属性过滤器而不是我想要的东西。 有没有办法实现这一目标。

你不需要用Jackson来做这件事。 只需使用Stream API过滤它。 如果数据是从DB加载的,则使用SQLWHERE子句对其进行过滤。

例:

@GetMapping(value = "/states", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public List<MyObject> loadStates(@RequestParam(name = "state", defaultValue = "NY", required = false) String[] states) {
    return service.loadAndFilterByState(states);
}

如果您有缓存列表,可以按如下方式对其进行过滤:

@GetMapping(value = "/states", produces = MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public List<MyObject> loadStates(@RequestParam(name = "state", defaultValue = "NY", required = false) String[] states) {
    Arrays.sort(states);
    return getStates()
            .stream()
            .filter(s -> Arrays.binarySearch(states, s.getState()) > -1)
            .collect(Collectors.toList());
}

也可以看看:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM