如何获得使用迭代器时的当前循环索引?
我正在使用一个迭代器遍历一个集合,我想获取当前元素的索引。
我怎样才能做到这一点?
使用你自己的variables,并在循环中增加它。
我有同样的问题,发现使用ListIterator工作。 类似于上面的testing:
List<String> list = Arrays.asList("zero", "one", "two"); ListIterator iter = list.listIterator(); while (iter.hasNext()) { System.out.println("index: " + iter.nextIndex() + " value: " + iter.next()); }
确保在实际获得下一个()之前调用nextIndex。
这里有一种方法可以使用自己的variables并保持简洁:
List<String> list = Arrays.asList("zero", "one", "two"); int i = 0; for (Iterator<String> it = list.iterator(); it.hasNext(); i++) { String s = it.next(); System.out.println(i + ": " + s); }
输出(你猜对了):
0: zero 1: one 2: two
好处是你不会在循环中增加你的索引(尽pipe你需要小心,每次循环只需要调用一次Iterator# – 只需要在最上面)。
您可以使用ListIterator
进行计数:
final List<String> list = Arrays.asList("zero", "one", "two", "three"); for (final ListIterator<String> it = list.listIterator(); it.hasNext();) { final String s = it.next(); System.out.println(it.previousIndex() + ": " + s); }
什么样的收集? 如果它是List接口的实现,那么你可以使用it.nextIndex() - 1
。
使用ListIterator遍历集合。 如果Collection不是一个List,那么首先使用Arrays.asList(Collection.toArray())
将它变成一个List。
使用一个int并在你的循环中增加它。
看到这里 。
iterator.nextIndex()
将提供通过后续调用next()
返回的元素的索引。
所有你需要使用它的iterator.nextIndex()来返回迭代器所在的当前索引。 这可能比使用自己的计数器variables(它仍然可以)更容易一些。
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列表,然后打印该项目的文本,然后“处于索引”,然后打印出迭代器find的索引。 🙂
只是做这样的事情:
for (AbstractDevice device : mDevicesList){ int curIndex = mDevicesList.indexOf(device)); }