import java.util.ArrayList;
import java.util.List;class A {
private List<B> list = new ArrayList<B>(); public List<B> getList() {
return list;
} public void setList(List<B> list) {
this.list = list;
}
}class B {
private String name; public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}public class Test { public static void main(String[] args) {
A a = new A();
                //写法 1.
for (int i = 0; i < 10; i++) {
a.getList().get(i).setName("sdfsdf");
                        //如果B中还有一堆的其他属性,就要a.getList().get(i).setXX("sdfsdf");就N多
}
//写法 2.
for (int i = 0; i < 10; i++) {
B b = a.getList().get(i);
b.setName("sdfsdf");
}
}
}如果B中还有一堆的其他属性
是写法1好还是写法2好,哪种的可读性好些?

解决方案 »

  1.   

    写法3比较好for(B b : a.getList())
    {
        b.setName("asdf");
    }
      

  2.   

    写法4:
    List list = a.getList();
    for (B b: list) {
       b.setName("hello");
    }
    不需要每次循环都getList();
      

  3.   

    说的都挺好
    主要是不喜欢a.getList().get(i).setName("sdfsdf");这么长的写法,感觉可读性比较差
      

  4.   

    我觉的写法4较好,只不过要在java1.5之后版本才可以用,用这个写法,我们就不用担心索引超出范围的问题
      

  5.   

                    //写法 1.
            for (int i = 0; i < 10; i++) {
                a.getList().get(i).setName("sdfsdf");
                            //如果B中还有一堆的其他属性,就要a.getList().get(i).setXX("sdfsdf");就N多
            }
            //写法 2.
            for (int i = 0; i < 10; i++) {
                B b = a.getList().get(i);
                b.setName("sdfsdf");
            }如果只set1个属性就写写法1,否则就写写法2,这种东西不用扣这么仔细,要说可读性,一行代码多几个方法调用就看不懂了,那读代码那位也忒差了点
      

  6.   

    5楼的写法4吧
    写法4: 
    List list = a.getList(); 
    for (B b: list) { 
      b.setName("hello"); 

    不需要每次循环都getList();