java for循环增强(foreach)

for循环增强,在此之前还不知道foreach有这样的功能,先鄙视一下自己,留给自己看:

功能:

***若List用foreach : [  for(Student stu : list)  ]这种形式遍历

***若此时,stu.setName()时,相当于在改变list的集合中当前对象的name值。

***相当于原来的for循环中 [ list.get(i).setName(); ]语句的作用,废话不多说,上代码

 

实体类Student(随便起一个就行)

package com.core.foreach;

public class Student {
    private int id ;
    private String name ;
    private int age;
    
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    
    

}

测试类ListTest

下方的方法reSetStuList()中两个for循环的结果都是一样的

package com.core.foreach;

import java.util.ArrayList;
import java.util.List;

public class ListTest {

    public static void main(String[] args) {
        List<Student> stuList = setStuList();
        List<Student> restuList =  reSetStuList(stuList);
        for(int i = 0 ; i < restuList.size() ; i ++){
            System.out.println(restuList.get(i).getName());
        }
        
    }
    
    public static List<Student> setStuList(){
        List<Student> stuList =new ArrayList<Student>();
        
        for(int i = 0 ; i < 10 ; i++){
            Student stu = new Student();
            stu.setAge(i);
            stu.setId(i);
            stu.setName("刘备");
            stuList.add(stu);
        }
        return stuList;
        
    }
    
    public  static List<Student> reSetStuList(List<Student> stuList){
//        for(int i = 0 ; i < stuList.size() ; i++){
//            stuList.get(i).setName("张飞");
//        }
        for(Student stu : stuList){
            stu.setId(20);
            stu.setAge(20);
            stu.setName("张飞");
            
        }
        return stuList;
    }

}

结果均是打印10个"张飞"

也可以在for循环这里打断点,每循环一次可以看看list的值是否被改变了

 

posted @ 2014-09-15 20:07  风巽•千叶翔龙  阅读(667)  评论(0编辑  收藏  举报