有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如何在循环中增加Java8Lambda表达式中的“数字”?

我有以下问题。我有一个整数位置,它从1开始,每次在xml中的特定位置发现txt中的特定人员时,它都会递增。如果我对foreach for (PersonMatchInfo pmi : personMatchInfo)使用经典迭代,它可以工作,但是我的上级让我对java8 foreach进行迭代,这种类型的迭代只对最终变量有效。如何在新的Java8循环中增加整数?多谢各位

int position = 1;
personMatchInfo.forEach(pmi ->{

                    if (!stopwatch1.isStarted()) {
                        stopwatch1.start();
                    } else if (stopwatch1.isStarted()) {

                    }

                    if (pmi.getPersonName().equals(e.getValue())) {

                        positionMap.put(position, positionMap.get(position) + 1);
                        break;

                    } else {

                        position++;
                    }
                });

共 (4) 个答案

  1. # 1 楼答案

    可以对其使用AtomicIntegerincrementAndGet方法

    另一种解决办法是int[] position = new int[]{1};

    和递增position[0]++;

  2. # 2 楼答案

    我想你们前辈要求你们使用流进行收集。 然后使用集合。流动滤器根据您的逻辑进行计数,这将产生一个与值相同的长值并使用它

  3. # 3 楼答案

    我知道已经很晚了,所以我会把它放在这里供未来的搜索者使用 以下是如何以一种非常简单的方式完成此任务:

    使用集合的indexOf(Object O)属性

    StringBuffer messageBody = new StringBuffer();    
    List<VipObj> listOfAllVips = getResponse();
        listOfAllVipsLocal.forEach(vip -> {
                                messageBody.append("\n\t" + (listOfAllVipsLocal.indexOf(vip) + 1) + ". " + vip.getBaseUrl() + "\n");
                            });
    
  4. # 4 楼答案

    您可以使用静态变量:

    public class Poubelle {
    
        private static int position = 1;
    
        public static void setPosition (List<PersonMatchInfo> listPersonMatchInfo) {
    
              listPersonMatchInfo.forEach(pmi -> {
              pmi.setPosition(position++);
            });
        }
    }