你应该在for循环中创建VarBean vb = new VarBean(); 将每次循环到的对象add到list中。因为你之前就一个VarBean ,list中add到的都是同一个VarBean ,然后VarBean 对象的属性值都改成了最后循环到的数据,就出现了你这个现象。

解决方案 »

  1.   

    public class XMLUtils {
    public void parseXML() throws DocumentException{           private List<VarBean> list = new ArrayListt<VarBean>();           for(Iterator i = ele.elementIterator();i.hasNext();){
    Element e = (Element) i.next();
    System.out.println("name is: " + e.getName());
    System.out.println("value is: " + e.getTextTrim());
                        VarBean vb = new VarBean();
    vb.setName(e.getName());
    vb.setValue(e.getTextTrim());
    list.add(vb);
           }
        }
    }
      

  2.   


        private transient Object[] elementData;    public boolean add(E e) {
            ensureCapacityInternal(size + 1);  // Increments modCount!!
            elementData[size++] = e;
            return true;
        }
    ArrayList并不是存储元素的拷贝。
      

  3.   

    既然用Bean ,干嘛不每次循环新建一个?
    这就是对象和基本数据类型的区别。
    可以这样修改:
    public class XMLUtils {
        public void parseXML() throws DocumentException
    {
    for(Iterator i = ele.elementIterator();i.hasNext();)
                    {
                        vb =  new VarBean();
                        Element e = (Element) i.next();
                        System.out.println("name is: " + e.getName());
                        System.out.println("value is: " + e.getTextTrim());
                        vb.setName(e.getName());
                        vb.setValue(e.getTextTrim());
                        list.add(vb);
                    }
    }
        private List<VarBean> list = new ArrayList();
        private VarBean vb;
    }