スパイラル用にJavaでカスタムジェネレーターを実装していますが、どちらのアプローチが優れているのか疑問に思っています:
public class SpiralIterator<E> implements Iterator<List<E>> {
private final int parameters;
public SpiralIterator(int parameters) {
this.parameters = parameters;
}
@Override
public boolean hasNext() {
return true;
}
@Override
public List<E> next() {
//...
}
@Override
public void remove() {
throw new UnsupportedOperationException("Not supported yet.");
}
}
また
public class SpiralIterator<E> implements Iterator<E[]> {
private final int parameters;
public SpiralIterator(int parameters) {
this.parameters = parameters;
}
@Override
public boolean hasNext() {
return true;
}
@Override
public E[] next() {
//...
}
@Override
public void remove() {
throw new UnsupportedOperationException("Not supported yet.");
}
}
で作成するとしましょうSpiralIterator<Integer> spiralIterator = new SpiralIterator<>(2);
。
次に、 を介して新しい要素を取得しList<E> next = spiralIterator.next();
、続いてE e1 = next.get(0);
および をE e2 = next.get(1);
それぞれ使用して要素を取得します。それ以外の場合は、 を介して取得しE[] next = spiralIterator.next();
、その後 および をE e1 = next[0];
介して取得しますE e2 = next[1];
。
2 つのアプローチのどちらが優先されますか?
また、それを a と呼ぶことは (慣例の観点から) 「許可」されSpiralGenerator
ますか?