java中的foreach用法,java中有foreach吗
如何解决写爬虫IP受阻的问题?立即使用。
相关:《Java视频教程》
首先说一下foreach,也叫增强for循环。foreach实际上是for循环的特殊简化版本。
再说一下foreach的书写格式:
For(元素类型元素名称:遍历数组(集合)(或迭代)){
句子
}虽然foreach是for循环的简化版,但并不代表foreach就比for好。当循环数未知或计算循环数很麻烦时,Foreach效率更高。但是一些更复杂的循环还是需要使用for循环,这样效率更高。
我们看看下面的例子:
公共静态void main(String[] args) {
ListString arr=new ArrayList string();
arr . add( Hello );
arr . add( Hello );
Arr.add(大家好);
//foreach循环
For(String str: arr){ //这里的str只是为了获取每个循环的arr中的值。
system . out . println(str);//等效于字符串str=arr[i]
}
}但是相比较而言,我们用for循环输入就有点麻烦了。
公共静态void main(String[] args) {
ListString arr=new ArrayList string();
arr . add( Hello );
arr . add( Hello );
Arr.add(大家好);
//for循环
for(int I=0;iarr . size();i ){
system . out . println(arr . get(I));//需要get方法来获取列表中的元素
}
}除了这个常用的集合,它还可以像map一样用于键值对。
例如:
公共静态void main(String[] args) {
MapString,String mapstr=new HashMapString,String();
Mapstr.put(王,男);
Mapstr.put(李,男);
Mapstr.put(张,女);
//使用//entrySet方法获取键值对的集合。
对于(图。EntryString,String s:mapstr . entry set()){//这里的map.entrystring,实际上是用来表示键值对的类型。
system . out . println( key= s . getkey());//这其实相当于s=maostr.entrySet,只不过s存储的是键值对。
system . out . println( value= s . getvalue());//这样就可以使用get方法来获取存储的键值对。
}
}另外,foreach不支持在循环中添加删除操作,因为使用foreach循环时数组(set)是锁定的,不能修改,否则会报错java.util.concurrency通知异常。
例如:
公共静态void main(String[] args) {
ListString arr=new ArrayList string();
arr . add( Hello );
arr . add( Hello );
Arr.add(大家好);
//foreach循环
for(String String:arr){
system . out . println(str);
arr . add( 1 );//添加数组
}
}所以总结如下:
Foreach只适合遍历集合或数组,而for在更复杂的循环中更有效。
Foreach不能修改数组或集合(添加删除操作)。如果你想修改它们,你必须使用for循环。
因此,与for循环相比,它更加灵活。java中for和foreach有什么区别?更多详情请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。