how hasnext() works in collection in java
80,384
Solution 1
Your loop above iterates through the list using an index. it.hasNext()
returns true until it
reaches the end of the list. Since you don't call it.next()
within your loop to advance the iterator, it.hasNext()
keeps returning true, and your loop rolls on. Until, that is, k
gets to be 5, at which point an IndexOutOfBoundsException
is thrown, which exits the loop.
The proper idiom using an iterator would be
while(it.hasNext()){
System.out.println(it.next());
}
or using an index
for(int k=0; k<ac.size(); k++) {
System.out.println(ac.get(k));
}
However since Java5, the preferred way is using the foreach loop (and generics):
List<String> ac= new ArrayList<String>();
...
for(String elem : ac){
System.out.println(elem);
}
Solution 2
the point is ac.get(k) doesn't consume any element of the iterator at the contrary of it.next()
Author by
Vinoth Kumar
Updated on January 31, 2020Comments
-
Vinoth Kumar over 4 years
program:
public class SortedSet1 { public static void main(String[] args) { List ac= new ArrayList(); c.add(ac); ac.add(0,"hai"); ac.add(1,"hw"); ac.add(2,"ai"); ac.add(3,"hi"); ac.add("hai"); Collections.sort(ac); Iterator it=ac.iterator(); k=0; while(it.hasNext()) { System.out.println(""+ac.get(k)); k++; } } }
output: ai hai hi hw hai
how it execute 5 times?? while come to hai no next element present so condition false. But how it executed.