当前位置:  开发笔记 > 编程语言 > 正文

检测最后的foreach循环迭代

如何解决《检测最后的foreach循环迭代》经验,为你挑选了3个好方法。

假设我有这样的foreach循环:

Set names = new HashSet<>();

//some code

for (String name: names) {

     //some code

}

有没有办法检查内部foreach实际名称是Set没有计数器的最后一个?

(对不起,如果这是一个重复的问题,我在这里找不到这样的问题)



1> Joao Pereira..:

为了简单和易懂,imo会做:

Set names = new HashSet<>();
Iterator iterator = names.iterator();
    while (iterator.hasNext()) {
        String name = iterator.next();
        //Do stuff
        if (!iterator.hasNext()) {
            //last name 
        }
     }

此外,这取决于你想要达到的目标.假设您正在实现通过昏迷分隔每个名称的常见用例,但最后不要添加空昏迷:

Set names = new HashSet<>();
names.add("Joao");
names.add("Pereira");

//if the result should be Joao, Pereira then something like this may work
String result = names.stream().collect(Collectors.joining(", "));



2> Lazar Petrov..:

没有,看看每个'循环的Java'如何工作?

您必须更改循环以显式使用迭代器或使用int计数器.



3> 小智..:

其他的回答是完全足够的,只需为给定的问题添加此解决方案.

Set names = new HashSet<>();

   //some code
   int i = 0;

for (String name: names) {
    if(i++ == names.size() - 1){
        // Last iteration
    }
   //some code

}


我将调整为`if(++ i == names.size())`,它只是在评估之前向i添加一个,这意味着我们可以直接检查set的大小,而不是-1
推荐阅读
保佑欣疼你的芯疼
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有