本帖最后由 j67065 于 2012-09-04 16:39:56 编辑

解决方案 »

  1.   

    Arraylist存放的是引用,你的4个元素中的引用都指向了同一个对象
    这个对象
    for(int i=0;i<4;i++)
            {
                english.setId(i);
                english.setAssociation(str[i]);
                englishes.add(english);
            }
    被你修改了4次,从a,b,c,d依次修改了一下,所以最后是d
      

  2.   

    1、ArrayList<E> list=new ArrayList<E>();中的E是指泛型,即,E 可以代表任何一种类型,这种类型就是要指定 list数组中存储的元素的类型,不指定是不能初始化的。比如,ArrayList<String> list=new ArrayList<String>(String);中就是指定我定义的这个list数组对象只能存储String类型的元素。当然,定义list的时候也可以不指定泛型。
    2、上述定义的list中的元素要用add的方法添加,list.add("The first String");list.add("The second String");list.add("The third String");
    当你取元素的时候,跟普通数组一样,下标为零的是第一个元素,比如:String str1=list.get(0);得到的是第一个元素。
    3、你的代码中有关ArrayList的使用没有错误。错误在于:你的ArrayList的泛型E是个对象类型,你仅仅创建了一个对象english,你每次调用english.setId(i);english.setAssociation(str[i]);
    时,english对象都会被修改,所以,最后,你存入list的是四个完全一样的东西。
    4、解决办法:把englishes=new ArrayList<English>();
    这句拿到for循环里面作为for循环的第一句。
      

  3.   

    我的输出结果是:有四个对象,即 3 d,3 d,3 d,3 d,3 d,存入了四个元素,只是这四个元素的值是一样的,如果用4楼的方法,结果就只有一个元素,因为你每循环一次创建同一个对象,这样反复的被覆盖,最终只有一个对象,插入的当然也只有一个元素,还是很谢谢你的回答。
    希望高手指点迷津!