Все, что вам нужно, это использовать iterator.nextIndex () для возврата текущего индекса, в котором находится итератор.Это может быть немного проще, чем использование вашей собственной переменной counter (которая все еще работает).
public static void main(String[] args) {
String[] str1 = {"list item 1", "list item 2", "list item 3", "list item 4"};
List<String> list1 = new ArrayList<String>(Arrays.asList(str1));
ListIterator<String> it = list1.listIterator();
int x = 0;
//The iterator.nextIndex() will return the index for you.
while(it.hasNext()){
int i = it.nextIndex();
System.out.println(it.next() + " is at index" + i);
}
}
Этот код будет проходить по списку list1 по одному элементу за раз и печатать текст элемента, а затем "isat index ", то он напечатает индекс, в котором его нашел итератор.:)