我对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)。不确定如果我这样做的话。
答案 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());
}