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();