我真的是Java新手。我想为REST服务做点事情。 我有一个包含数据的对象的数组列表,我想删除所有不符合基于枚举的条件的对象。 我通过Apache CollectionUtils和过滤器获得了一些示例。但是我发现的所有东西都与等值有关。
此刻,这是我完成的代码
MyObjectFiltered.addAll(ListedMyObject);
CollectionUtils.filter(MyObjectFiltered, new Predicate() {
@Override
public boolean evaluate(Object object) {
boolean boolFound = false;
for(String EnumItem : EnumAsList)
{
boolFound = ((MyObjectModel) object).getValue() == EnumItem ;
}
return boolFound;
}
});
我知道这不是我想要做的方式,但是我不知道该怎么做。你们对我可以寻求达到目标的任何建议吗?
感谢您的帮助。
答案 0 :(得分:2)
如果我正确理解您的意思,您只是想从列表中删除与某个枚举不匹配的对象?您不需要外部库即可完成简单的操作,Java 8的lambda可以为您完成此操作。
您只需要遵循MyObjectFiltered.removeIf(object -> !EnumAsList.contains(object.getValue());
基本上,这意味着如果枚举列表中不包含该对象,请将该对象从我的列表中删除。
答案 1 :(得分:1)
这是java流API的用途。 https://www.oracle.com/technetwork/articles/java/ma14-java-se-8-streams-2177646.html
var filteredList = MyObjectFiltered
.stream()
.filter(obj -> EnumList.contains(obj.getValue()))
.collect(Collectors.toList());