为什么我找不到迭代器的值?

为什么这段代码不打印带有 a 的值"q"

Iterator<String> it = ZoneId.getAvailableZoneIds().iterator();

while (it.hasNext()) {
    if (it.next().contains("q"))
         System.out.println(it.next());
}

输出:

Pacific/Kwajalein
Etc/GMT-3
America/Martinique
Pacific/Funafuti
Canada/Pacific
Eire
America/Sitka
Brazil/West
US/Aleutian

回答

每次调用时,next()您都会阅读下一项,但是在打印时又会next() 再次调用,因此您正在打印带有 a 的下一项q

Java 为这种情况提供了方便的语法;在foreach循环

for (String zoneId : ZoneId.getAvailableZoneIds()) {
     if (zoneId.contains("q")) {
        System.out.println(zoneId);
     }
}

或者最近,流:

ZoneId.getAvailableZoneIds().stream()
  .filter(zoneId -> zoneId.contains("q"))
  .forEach(System.out::println);


以上是为什么我找不到迭代器的值?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>