gpt4 book ai didi

java-8 - 无法弄清楚用法

转载 作者:行者123 更新时间:2023-12-01 22:55:43 25 4
gpt4 key购买 nike

以下是 Java SE 8 为真正不耐烦的人提供的练习之一。

Form a subclass Collection2 from Collection and add a default method void forEachIf(Consumer action, Predicate filter) that applies action to each element for which filter returns true. How could you use it?

以下是我对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);
}
});
}
}

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

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

// What next???

}

最佳答案

您需要创建一个实现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

关于java-8 - 无法弄清楚用法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24738648/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com