gpt4 book ai didi

java - 将条件作为参数传递给迭代器

转载 作者:行者123 更新时间:2023-12-01 17:31:19 24 4
gpt4 key购买 nike

我的项目即将完成,尽管有一件事我无法克服。

我先引用一下:

The class Board must also oer a method that returns an iterator that will return all the elements on the board (not including items carried by robots) that satisfy a given condition. Examples of conditions are all elements that have an energy of at least 1000 Ws (the iterator will then not return walls nor surprise boxes, because they have no known energy), all elements in some sub range of the board, all items on the board, etc.

所以,我有一个带有元素的板。 (机器人、某些元素、墙壁……)

在类里面我们已经了解了如何实现 Iterable,并在需要时重写方法 iterator(),但现在我需要将条件作为参数传递给该迭代器?

我最好的尝试是在 Board 类中使用这种方法:

    public Iterator<Element> getAllElementsByCondition(boolean condition) {
HashSet<Element> result = new HashSet<Element>();
for (Element element : elements)
if (Board.this.hasElement(element) && condition)
result.add(element);
return result.iterator();
}

但是,正如您所见,我不知道如何将条件作为参数传递给方法。

我也不知道这是否就是我创建迭代器的方式。

编辑:
我不允许使用任何外部库

最佳答案

考虑使用 Guava 的集合增强。在本例中,具体为 Collections2.filter()Collections2.transform() 。如果这样做,您可以提供一个 Predicate 来描述您关心的条件,然后只需使用 filter() 来运行集合并返回匹配元素的集合。这是一个非常本地化的示例:

public Iterator<Element> getAllElementsByCondition(Predicate<Element> condition) {
return Collections2.filter(elements, condition).iterator();
}

但这并不是说如果您接受Guava,您就可以更彻底地改变结构。做事的方式。

关于java - 将条件作为参数传递给迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10600504/

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