Apache CollectionUtil过滤器列表包含枚举列表单词

时间:2018-12-04 15:55:54

标签: java apache arraylist filter enums

我真的是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;
        }
    });

我知道这不是我想要做的方式,但是我不知道该怎么做。你们对我可以寻求达到目标的任何建议吗?

感谢您的帮助。

2 个答案:

答案 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());