黑马程序员技术交流社区
标题:
关于ForEach的问题
[打印本页]
作者:
fenzheng
时间:
2014-3-18 22:04
标题:
关于ForEach的问题
传统for和高级for有什么区别呢?
作者:
zhxu188
时间:
2014-3-18 22:35
传统的for没什么可说的,高级for是传统for循环的变种也可以说是简写 只能对数组或者是List这样的集合使用 这个是java 1.5新加入的
作者:
SyouRai_Tsk
时间:
2014-3-18 22:41
对于for循环增强,无非也就是数组,List集合,Map集合之间使用,如果学习了这特性可以提高工作效率
package cn.itcast.foreach;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Map.Entry;
import org.junit.Test;
public class demo3_3 {
/*
首先我们来讲数组的循环
*/
@Test
public void test1(){
int arr[]={1,2,3,4,5};
//这是传统意义上的输出数组中的每个值
for(int i=0;i<arr.length;i++){
System.out.println(arr[i]);
}
/*而下面是使用我们的for循环增强
for循环增强的使用语法
for(1.变量类型 变量 :2.需迭代的数组或集合)
}
1.是你需要迭代的数组或集合里那个值的变量类型,下面就是int类型
2.是你需要迭代的数组或集合 而下面就是前面定义的arr数组
ps:在此已经说明for循环的使用语法,下面则不再次具体说明使用的语法
*/
for(int i:arr){
System.out.println(i);
}
}
@Test
public void test2(){
List list=new ArrayList();
list.add(1);
list.add(2);
list.add(3);
list.add(4);
list.add(5);
/*
正常的情况下,集合都会使用Iterator进行迭代,然后使用hasNext和next
*/
Iterator it=list.iterator();
while(it.hasNext()){
int i=(Integer)it.next();
System.out.println(i);
}
for(Object obj:list){
System.out.println(obj);
}
}
@Test //传统的map集合1
public void test3(){
Map map=new LinkedHashMap();
map.put("1", "aaaa");
map.put("2", "bbbb");
map.put("3", "cccc");
map.put("4", "dddd");
Set set=map.keySet();
Iterator it=set.iterator();
while(it.hasNext()){
String key=(String) it.next();
String value=(String) map.get(key);
System.out.println(key + "=" + value);
}
}
@Test //增强for循环的map集合1
public void test4(){
Map map=new LinkedHashMap();
map.put("1", "aaaa");
map.put("2", "bbbb");
map.put("3", "cccc");
map.put("4", "dddd");
Set set=map.keySet();
for(Object obj:set){
String key=(String) obj;
String value=(String) map.get(key);
System.out.println(key + "=" + value);
}
}
@Test
public void test5(){
Map map=new LinkedHashMap();
map.put("1", "aaaa");
map.put("2", "bbbb");
map.put("3", "cccc");
map.put("4", "dddd");
Set set=map.entrySet();
Iterator it=set.iterator();
while(it.hasNext()){
Map.Entry me=(Entry) it.next();
String keys=(String) me.getKey();
String value=(String) me.getValue();
System.out.println(keys + "=" + value);
}
}
@Test
public void test6(){
Map map=new LinkedHashMap();
map.put("1", "aaaa");
map.put("2", "bbbb");
map.put("3", "cccc");
map.put("4", "dddd");
Set set=map.entrySet();
for(Object obj:set){
Map.Entry me=(Entry) obj;
String keys=(String) me.getKey();
String value=(String) me.getValue();
System.out.println(keys + "=" + value);
}
}
}
传统的for循环可以输出也可以赋值,但是,增强for循环只能用来输出数据,不能进行赋值,上面是增强for的一些小例子,给予参考!
作者:
李猛
时间:
2014-3-18 22:41
高级for循环就是简写了原来的for循环,就拿数组说吧String[ ] str=new String[10] 使用高级for循环会简单的多,for(String s : str) 循环体写成打印s就行了,这样数组的遍历就变得简单了, for循环使用语法 for(数组/集合类型 变量名 : 数组名/集合名) 紧接着你得到的变量就是数组或是集合元素
作者:
菜小徐
时间:
2014-3-18 22:47
for和foreach的用法区别for可以不逐个遍历,比如每隔一个遍历一个,也可以从前向后遍历,从后向前,但是foreach不能从后向前遍历,只能从前向后,并且foreach只能逐个遍历。在foreach中不能向迭代变量赋值。
如果只是遍历集合或者数组,用foreach好些,快些。
如果对集合中的值进行修改,就要用for循环了。其实foreach的内部原理其实也是Iterator,但它不能像Iterator一样可以人为的控制,而且也不能调用iterator.remove();更不能使用下标来访问每个元素,所以不能用于增加,删除等复杂的操作。
作者:
王竞
时间:
2014-3-19 00:46
foreach语句是java5的新特征之一,在遍历数组、集合方面,foreach为开发人员提供了极大的方便。
foreach语句是for语句的特殊简化版本,但是foreach语句并不能完全取代for语句,然而,任何的foreach语句都可以改写为for语句版本。
foreach并不是一个关键字,习惯上将这种特殊的for语句格式称之为“foreach”语句。从英文字面意思理解foreach也就是“for 每一个”的意思。实际上也就是这个意思。
foreach的语句格式:
for(元素类型t 元素变量x : 遍历对象obj){
引用了x的java语句;
}
优点:foreach简化数组和集合的遍历 ,
确定:foreach语句的局限性,如果要引用数组或者集合的索引,则foreach语句无法做到,foreach仅仅老老实实地遍历数组或者集合一遍
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2