gpt4 book ai didi

java - 在那种情况下我真的需要实现迭代器吗?

转载 作者:搜寻专家 更新时间:2023-10-31 19:38:02 24 4
gpt4 key购买 nike

我需要一些关于 Iterable<T> 用法的建议在 Java 中。

我有以下类(class):

public abstract class Validator implements Comparable<Validator>{
public abstract boolean validate();
public abstract int getPriority();

@Override
public int compareTo(Validator o) {
return getPriority() > o.getPriority() ? -1 :
getPriority() == o.getPriority() ? 0 :
1;
}
}

我需要创建一个类 ValidatorChain如下:

public class ValidatorChain{
//Contains Collection<Validator>

// and we can iterate over it with for-each loop in high-to-low priority order
}

也许我应该重写 Iterable<T> 的一些即时实现而不是从头开始编写我自己的。

最佳答案

您可以通过委托(delegate)给集合的迭代器以一种简单的方式手动编写它:

public class ValidatorChain implements Iterable<Validator> {
Collection<Validator> validators = ...;
public Iterator<Validator> iterator() {
return validators.iterator();
}
}

如果您需要对其进行排序,您可以对 validators 集合进行排序或复制一份:

  public Iterator<Validator> iterator() {
List<Validator> sorted = new ArrayList<> (validators);
Collections.sort(sorted);
return sorted.iterator();
}

或者使用 Java 8:

 public Iterator<Validator> iterator() {
return validators.stream().sorted().collect(toList()).iterator();
}

关于java - 在那种情况下我真的需要实现迭代器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30544589/

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