gpt4 book ai didi

java - 对象数组(T[])的默认迭代器实现?

转载 作者:行者123 更新时间:2023-12-01 22:45:32 24 4
gpt4 key购买 nike

我有一个类,类似于下面的代码。它实现了Iterable<T> iterface,它用于为其包含的数组提供迭代功能。

我一直习惯于滚动自己的简单迭代器来迭代数组。然而,我刚刚意识到,至少对于spliterators,您可以通过调用 Arrays.spliterator(array) 获得可接受的默认实现。 。普通 Iterator<T> 是否有类似的默认实现在 T 的数组上?

public class MyClass implements Iterable<ContainedClass>
{
...
private final ContainedClass[] array;
...

//
// INTERFACE: Iterable<ContainedClass>
//

@Override
public Iterator<ContainedClass> iterator() {
return ??? // I want to return a default implementation, not my own!
}

@Override
public Spliterator<ContainedClass> spliterator() {
return Arrays.spliterator(array);
}
}

最佳答案

最接近 JDK 中默认实现的东西:

Arrays.asList(array).iterator()

简单的自定义实现:

public final class ArrayIterator<E> implements Iterator<E> {
private final E[] _elements;
private int _index;

@SafeVarargs
public ArrayIterator(final E... elements) {
_elements = Objects.requireNonNull(elements);
}

public boolean hasNext() {
return _index < _elements.length;
}

public E next() {
if (hasNext()) {
return _elements[_index++];
}
throw new NoSuchElementException();
}

public void remove() {
throw new UnsupportedOperationException();
}
}

关于java - 对象数组(T[])的默认迭代器实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25433379/

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