0
なぜ、場所()で異なる値が返されるのだろうと思います。コンストラクタでは、それは意味をなさない私3を返します。しかし、2番目()では0を返します。私は両方の場所が0を返すはずだと思いました。コンストラクタとjavaのメソッドで異なる値を返す
あなたの属性コンストラクタのパラメータの値を割り当てる必要がありimport java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class Vector2D implements Iterator<Integer> {
private List<List<Integer>> vec2d;
private Iterator<Integer> it;
private int counter = 0;
private int size;
public Vector2D(List<List<Integer>> vec2d) {
this.vec2d = new ArrayList<List<Integer>>();
if(vec2d.size() == 0) {
this.it = null;
} else {
this.size = vec2d.size();
System.out.println("this size is " + size); // * returns 3
this.it = vec2d.get(0).iterator();
}
}
@Override
public Integer next() {
System.out.println("what happens here? " + vec2d.size()); **// * why it returns 0?? should it return 3??**
if(hasNext()) {
return it.next();
}
return -1;
}
@Override
public boolean hasNext() {
if(it == null) {
return false;
}
while(counter < size) {
if(it.hasNext()) {
return true;
}
counter++;
if(counter >= size) {
return false;
}
System.out.println("counter is " + counter + " size is " + vec2d.size());
List<Integer> l = vec2d.get(counter);
it = l.iterator();
}
return false;
}
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
List<Integer> list2 = new ArrayList<Integer>();
List<Integer> list3 = new ArrayList<Integer>();
list.add(1);
list.add(2);
list2.add(3);
list3.add(4);
list3.add(5);
list3.add(6);
List<List<Integer>> lists = new ArrayList<List<Integer>>();
lists.add(list);
lists.add(list2);
lists.add(list3);
Vector2D vec = new Vector2D(lists);
System.out.println(vec.next());
}
}
ここで、place()はどこにあり、コード内のsecond()はどこにあるのでしょうか? –