检测上次前循环迭代

2022-08-31 14:17:39

假设我有一些这样的循环:foreach

Set<String> names = new HashSet<>();
//some code
for (String name: names) {
     //some code
}

有没有办法检查内部的实际名称是否是没有计数器的最后一个?我在这里没有发现这样的问题。foreachSet


答案 1

为了简单易懂,imo可以做到:

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

此外,这取决于您要实现的目标。假设您正在实现一个常见的用例,即通过coma分隔每个名称,但不要在最后添加空的coma:

Set<String> 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

其他answear是完全足够的,只需为给定的问题添加此解决方案即可。

Set<String> names = new HashSet<>();

   //some code
   int i = 0;

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

}