A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 罗衎 黑马帝   /  2011-7-24 22:37  /  3875 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

for循环增强,其模式的一般格式
for(type 变量名:变量集合名)
{}
  增强循环和for常规的循环 ,有什么优势?
能不能写个for增强循环的代码?


谢谢

评分

参与人数 1技术分 +2 收起 理由
小龙 + 2 不懂就问!

查看全部评分

10 个回复

倒序浏览
增强型的for循环优点主要体现在实现了Iterable接口的集合和泛型中,举个例子比如对 set 的遍历一般是迭代遍历:[code=java]Set<String> set = new HashSet<String>();

Iterator<String> it = set.iterator();

while (it.hasNext()) {

  String str = it.next();

  System.out.println(str);

}[/code]for循环遍历时为:[code=java]for (String str : set) {

      System.out.println(str);

}[/code]

评分

参与人数 1技术分 +1 收起 理由
小龙 + 1 楼主不是要这个答案吧!

查看全部评分

回复 使用道具 举报
[code=java]java中的for循环、foreach,while

  public static void main(String[] args) {

  List<Integer> map = new ArrayList<Integer>();

  for (int i = 0; i < 100000; i++) {

  map.add(i);

  }

  long currTime = System.currentTimeMillis();

  //基本的for

  int z = map.size();

   for (int i = 0; i < z; i++) {

   int tmp = map.get(i);

   System.out.println(tmp);

  }

  //foreach

  for (Integer integer : map) {

  int tmp = integer;

  System.out.println(tmp);

  }

  //while

   int i = 0 ;

   while(i<z){

   int tmp = map.get(i);

   System.out.println(tmp);

   i++;

   }
  long time = System.currentTimeMillis() - currTime ;

   System.out.println(time);

  

   }
//材料记载foreach和while在效率上比for高,但是while有特殊的用途
比如wile(rs.next()){
''''''''''
}[/code]
[ 本帖最后由 杨志罡 于 2011-07-24  23:05 编辑 ]

评分

参与人数 1技术分 +3 收起 理由
小龙 + 3 加分必须的

查看全部评分

回复 使用道具 举报
普通的循环还需要一个作为循环次数的变量,增强行循环不再需要这个变量.
foreach,即增强型循环,主要用于数组,或实现了接口的类,因为这些数组或类的大小在循环的时候已经是确定的了,所以会比普通的循环少定义一个或多个变量.且方便的依次取出数组或类的原素。
int[] as={1,3,9};
for(int a:as){功能}
打个比方:
一间教室里有很多学生,你想和所有学生都谈谈,用for的话你先要知道有多少人,可能还需要一把凳子让学生坐;用foreach的话就没这么麻烦了,就用一把凳子,然后跟班长说让学生一个一个的过来谈话.

评分

参与人数 1技术分 +1 收起 理由
小龙 + 1

查看全部评分

回复 使用道具 举报
iterator接口
回复 使用道具 举报
黑马网友  发表于 2011-7-24 23:27:09
地板

关于增强型for循环

优点:
1.能使代码看起来更加简洁一些;
2.在泛型中有优势;
缺点:
1.集合遍历中,不方便对集合中的元素操作;
回复 使用道具 举报
黑马网友  发表于 2011-7-24 23:28:50
7#
for循环增强主要是针对数组和集合的,它能更简单的遍历数组和集合等对象。而常规的是对单个的环境变量来说的,比如:for(int   i=0;i<10; i++);
而for循环增强格式为for(type 变量名:变量集合名)它,比如:
int [] integers={1,2,3,4};//建立数组
for(int i :integers);//开始遍历

评分

参与人数 1技术分 +1 收起 理由
小龙 + 1 只能加一分!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-24 23:45:45
8#
增强for循环是J2SE5.0的新特性,其语法格式是:for(type 迭代变量名:集合对象名(或数组名)){…}
迭代变量必须在for( )的括号中定义,集合必须是实现了Iterable接口的集合类
在增强的for循环中,我们不需要去检查数组的边界,不必担心数组下标越界,
这些都由增强的for循环替我们代劳了
例:
在J2SE5.0之前我们要求一个int数组中所有元素的和是这么写的:

int sum=0;
for(int i=0;数组名.length;i++)
{
    sum+=数组名[i];
}
return sum;
现在我们可以用增强的for功能这样写:
for(int i;数组名)    //迭代变量名可以任取
{
    sum+=i;
}

在集合类上的应用更能发挥增强for的优势
例:
Map<String,Integer> maps=new HashMap<String,Integer>();
maps.put("one", 1);
maps.put("two", 2);
maps.put("three",3);
Set<Map.Entry<String, Integer>>entrySet=maps.entrySet();//HashMap并未实现Iterable接口,但它有一个方法entrySet() ,返回一个对应对象 maps的 、实现Set接口类的对象,因为set接口继承了Iterable接口,所以返回的这个对象的类,必实现了Iterable接口,此时,我们就可以通过
增强for进行迭代,得出HashMap类的对象maps里面的key、value
for(Map.Entry<String, Integer> m:entrySet)
{
    System.out.println(m.getKey()+"="+m.getValue());
}

评分

参与人数 1技术分 +2 收起 理由
小龙 + 2 看得头晕!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-25 01:02:55
9#
增强型的for循环 优点主要体现在集合中,随便举个例子
比如对 set 的遍历
一般是迭代遍历:[code=java]Set<String> set = new HashSet<String>();
Iterator<String> it = set.iterator();
while (it.hasNext()) {
  String str = it.next();
  System.out.println(str);
}[/code]for循环遍历:[code=java] for (String str : set) {
      System.out.println(str);
}[/code]这样在代码看起来就很简洁
[color=Red]
优点还体现在泛型 假如 set中存放的是Object[/color][code=java]Set<Object> set = new HashSet<Object>();[/code]for循环遍历:[code=java]for (Object obj: set) {
      if(obj instanceof Integer){
                int aa= (Integer)obj;
             }else if(obj instanceof String){
               String aa = (String)obj
             }
              ........
}[/code][color=Red]如果你用Iterator遍历,那就晕了[/color]map list 也一样

[color=Red]唯一的缺点就是 在遍历 集合过程中,不能对集合本身进行操作[/color][code=java]  for (String str : set) {
   set.remove(str);//错误!
  }[/code]

评分

参与人数 1技术分 +3 收起 理由
小龙 + 3 很明了!

查看全部评分

回复 使用道具 举报
黑马网友  发表于 2011-7-25 13:00:04
10#
普通的循环还需要一个作为循环次数的变量,增强行循环不再需要这个变量.
foreach,即增强型循环,主要用于数组,或实现了接口的类,因为这些数组或类的大小在循环的时候已经是确定的了,所以会比普通的循环少定义一个或多个变量.且方便的依次取出数组或类的原素。
增强型的for循环 优点主要体现在集合中
for循环遍历:查看打印?1.for (Object obj: set) {
2.      
if(obj instanceof Integer){
3.               
int aa= (Integer)obj;
4.            
}else if(obj instanceof String){
5.               
String aa = (String)obj
6.            
}
7.              
........
8.
}

评分

参与人数 1技术分 +2 收起 理由
admin + 2

查看全部评分

回复 使用道具 举报

回复 楼主 的帖子

int sum;


for(int  number:totalnumbers ){
sum+=number;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马