无法弄清楚用法

阿拉文·亚拉姆(Aravind Yarram)

以下是Java SE 8中针对“真正不耐烦”的练习之一。

从Collection组成一个子类Collection2,并添加一个默认方法void forEachIf(Consumer action,Predicate filter),该方法将操作应用于过滤器返回true的每个元素。你怎么使用它?

以下是我对的定义Collection2我无法弄清楚如何使用它。

public interface Collection2<E> extends Collection<E>
{

    default void forEachIf(Consumer<E> action, Predicate<E> filter)
    {
        forEach(e -> {
            if (filter.test(e))
            {
                action.accept(e);
            }
        });
    }
}

因此,我有以下列表,我想对String.toUpperCase以“ a”开头的字符串应用操作。我将如何使用它Collection2来实现?

public static void ex09()
{
        Collection<String> l = new ArrayList<>();
        l.add("abc");
        l.add("zxx");
        l.add("axc");

        // What next???

}
dkatzel

您需要制作一个新类来实现Collection2

public class ArrayList2<E> extends ArrayList<E> implements Collection2<E>{

}

然后只需使用您的新课程:

public static void ex09()
{
    Collection2<String> l = new ArrayList2<>();
    l.add("abc");
    l.add("zxx");
    l.add("axc");

    l.forEachIf(  (s)->System.out.println(s.toUpperCase()),
                  (s)-> s.startsWith("a"));


}

运行时将打印:

ABC
AXC

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章