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); } } }
既然用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; }
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);
}
}
}
private transient Object[] elementData; public boolean add(E e) {
ensureCapacityInternal(size + 1); // Increments modCount!!
elementData[size++] = e;
return true;
}
ArrayList并不是存储元素的拷贝。
这就是对象和基本数据类型的区别。
可以这样修改:
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;
}