Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在foreach循环中增加计数_Java_Lambda_Java 8 - Fatal编程技术网

Java 如何在foreach循环中增加计数

Java 如何在foreach循环中增加计数,java,lambda,java-8,Java,Lambda,Java 8,下面是我的代码: public static void main(String[] args) { int count = 0; List<String> namesList = new ArrayList<>(); namesList.add("gaurav"); namesList.add("deepak"); namesList.add("anit"); na

下面是我的代码:

public static void main(String[] args) {
    int count = 0;
    List<String> namesList = new ArrayList<>();
    namesList.add("gaurav");
    namesList.add("deepak");
    namesList.add("anit");
    namesList.add("garvit");
    namesList.add("satvir");
    namesList.add("lino");
    namesList.add("gogo");
    namesList.forEach(names -> {
        if (names.startsWith("g")) {
            count++;
        }
    });
    if (count > 1) {
        System.out.println("executed");
    }
}
publicstaticvoidmain(字符串[]args){
整数计数=0;
List namesList=new ArrayList();
名称列表。添加(“gaurav”);
名称列表。添加(“deepak”);
名称列表。添加(“anit”);
名称列表。添加(“garvit”);
名称列表。添加(“satvir”);
名称列表。添加(“lino”);
名称列表。添加(“gogo”);
名称列表。forEach(名称->{
if(名称。起始带(“g”)){
计数++;
}
});
如果(计数>1){
系统输出打印项次(“已执行”);
}
}
递增计数时出现以下错误:
在封闭范围中定义的局部变量计数必须是最终的或有效的最终的

为此使用
原子整数

AtomicInteger count = new AtomicInteger();
namesList.forEach(names -> {
    if (names.startsWith("g")) {
        count.getAndIncrement();
    }
});
if(count.get() > 1) {
    System.out.println("executed");
}
或者使用流API

long count = namesList.stream()
                      .filter(name -> name.startsWith("g")) // filter with condition
                      .count(); // then count

不要增加变量

,及:


它更易于阅读和理解,代码更少。

您也可以通过流来实现这一点。使用
filter()
查找以
g
开头的名称,使用
findFirst()
查找第一个名称。如果没有,则返回
null

String结果=名称列表
.stream()
.filter(name->name.startsWith(“g”))
.findFirst()
.orElse(空);
long count = namesList.stream()
    .filter(name -> name.startsWith("g"))
    .count();