迭代器接受字符串,但我需要在偶数索引处获取元素?
Iterator takes in string but I need to get elements at even indices?
您好,我正在创建一个 EvenIterator
,其中 returns 个元素位于偶数索引处,例如:
public class EvenIterator implements java.util.Iterator<String> {
private Iterator<String> iter;
public EvenIterator(Iterable<String> iter) {
this.iter = iter.iterator();
createEvenListIterator();
}
private void createEvenListIterator() {
LinkedList<String> list = new LinkedList<String>();
while(iter.hasNext()) {
String value = iter.next();
if(value%2 == 0) {
list.add(value);
}
}
iter = list.iterator();
}
public boolean hasNext() {
return iter.hasNext();
}
public String next() {
if(iter.hasNext()) {
return iter.next();
} else
throw new NoSuchElementException();
}
public void remove() {
throw new UnsupportedOperationException();
}
}
我在 if(value%2 == 0)
处收到错误(参数类型错误),是否有解决此问题或解决此问题的方法?谢谢
if(value%2 == 0)
正在检查一个值是否为偶数,但您需要检查该值的 index 是否为偶数。有几种方法可以做到这一点,但一种方法是在循环中添加您自己的计数器。
private void createEvenListIterator() {
LinkedList<String> list = new LinkedList<String>();
int count = 0;
while(iter.hasNext()) {
String value = iter.next();
if(count % 2 == 0) {
list.add(value);
}
count++;
}
iter = list.iterator();
}
另一种方法,如果您能够切换到使用 ListIterator
,则在 iter.next()
之前调用 nextIndex()
并直接获取索引。
您好,我正在创建一个 EvenIterator
,其中 returns 个元素位于偶数索引处,例如:
public class EvenIterator implements java.util.Iterator<String> {
private Iterator<String> iter;
public EvenIterator(Iterable<String> iter) {
this.iter = iter.iterator();
createEvenListIterator();
}
private void createEvenListIterator() {
LinkedList<String> list = new LinkedList<String>();
while(iter.hasNext()) {
String value = iter.next();
if(value%2 == 0) {
list.add(value);
}
}
iter = list.iterator();
}
public boolean hasNext() {
return iter.hasNext();
}
public String next() {
if(iter.hasNext()) {
return iter.next();
} else
throw new NoSuchElementException();
}
public void remove() {
throw new UnsupportedOperationException();
}
}
我在 if(value%2 == 0)
处收到错误(参数类型错误),是否有解决此问题或解决此问题的方法?谢谢
if(value%2 == 0)
正在检查一个值是否为偶数,但您需要检查该值的 index 是否为偶数。有几种方法可以做到这一点,但一种方法是在循环中添加您自己的计数器。
private void createEvenListIterator() {
LinkedList<String> list = new LinkedList<String>();
int count = 0;
while(iter.hasNext()) {
String value = iter.next();
if(count % 2 == 0) {
list.add(value);
}
count++;
}
iter = list.iterator();
}
另一种方法,如果您能够切换到使用 ListIterator
,则在 iter.next()
之前调用 nextIndex()
并直接获取索引。