使用java流从db检索数据

时间:2016-05-11 08:10:24

标签: java java-stream

我对Java 8的功能非常陌生,比如流,过滤器和东西,说实话,我已经用Java写了一年多了。 如果有人可以提出建议,这是我的问题。

@Override
public ArrayList<Agent> getAllEnabledAgents() throws Exception {    
    ArrayList<Agent> agents = repository.all(); //redis repository
    Stream<Agent> result = agents.stream().filter(a-> a.equals(a.getConfigState().Enabled));    //enum  
    return result; //I dont know how to return result or whether I am using stream correctly.

}

主要想法是我想要返回所有启用的代理。 gerConfigState()返回一个枚举(__ConfigState)。不确定如果我这样做的话。

3 个答案:

答案 0 :(得分:1)

使用collect的{​​{1}} - metod。此外,您的过滤器看起来有点奇怪,因为变量Stream是类a的对象。

所以也许是这样的:

Agent

然后,就像评论所说的那样,你可能最好用查询来过滤它。

答案 1 :(得分:1)

您的过滤条件不正确(我假设getConfigState()返回枚举)。您可以使用以下内容:

Stream<Agent> streamAgent = agents.stream().filter(a-> a.getConfigState() == Enabled);    
return streamAgent.collect(Collectors.toList()); 

答案 2 :(得分:0)

感谢您的帮助。这是最终版本:

@Override
public List<Agent> getAllEnabledAgents() throws Exception {
      return repository.all()
            .stream()
            .filter(a-> a.getConfigState() == ConfigState.Enabled)
            .collect(Collectors.toList());
}