对于每个For循环转换

Pra*_*lur 11 java foreach for-loop

我可以知道如何将每个循环的以下内容转换为正常的for循环?

for (SortedMap.Entry<Integer, String> entry : mapDefect.entrySet())
Run Code Online (Sandbox Code Playgroud)

我有一个count变量作为起点和地图的结尾作为终点.因此,我如何将其转换为正常的for循环?

Jon*_*eet 8

JLS的第14.14.2节给出了翻译.在这种情况下,它大致是:

for (Iterator<SortedMap.Entry<Integer, String>> iterator
         = mapDefect.entrySet().iterator();
     iterator.hasNext(); )
{
    SortedMap.Entry<Integer, String> entry = iterator.next();
    // ...
}
Run Code Online (Sandbox Code Playgroud)

或者,使用GuavaIterables类来获取有序集的一部分:

Iterable<SortedMap.Entry<Integer, String>> section = Iterables.limit(
    Iterables.skip(mapDefect.entrySet(), start), end - start);
for (SortedMap.Entry<Integer, String> entry : section) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

或者如果它只是来自count(澄清评论):

for (SortedMap.Entry<Integer, String> entry :
         Iterables.skip(mapDefect.entrySet(), count)) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)


NPE*_*NPE 6

你说任务是跳过第一个count元素,然后处理其余的元素.

这可以通过"for"循环或"for each"循环来完成.在这种情况下,我会将其保留为"for each"循环:

int i = 0;
for (SortedMap.Entry<Integer, String> entry : mapDefect.entrySet()) {
   if (i++ < count) continue;
   ...
}
Run Code Online (Sandbox Code Playgroud)