Java 为什么我的向量会复制?
我想知道为什么我的向量会重复?我知道我可以使用ArrayList,但这是对我的黑莓应用程序的测试,目前只使用Vector。这是我继续得到的结果:Java 为什么我的向量会复制?,java,vector,Java,Vector,我想知道为什么我的向量会重复?我知道我可以使用ArrayList,但这是对我的黑莓应用程序的测试,目前只使用Vector。这是我继续得到的结果: ID:3 and Name:Catty and Price:100 and Msg:Catty is a preety girl ID:3 and Name:Catty and Price:100 and Msg:Catty is a preety girl ID:3 and Name:Catty and Price:100 and Msg:Catty
ID:3 and Name:Catty and Price:100 and Msg:Catty is a preety girl
ID:3 and Name:Catty and Price:100 and Msg:Catty is a preety girl
ID:3 and Name:Catty and Price:100 and Msg:Catty is a preety girl
下面是代码,testapp.java
package testing;
import java.util.Vector;
public class testapp {
private static Vector<String> listElements= new Vector<String>();
private static Vector<String> listName= new Vector<String>();
private static Vector<Integer> listPrice= new Vector<Integer>();
private static Vector<String> listDate= new Vector<String>();
private static Vector<String> listAbstract= new Vector<String>();
private static Vector<rec> a = new Vector<rec>();
static rec record = new rec();
public static void main(String[] args){
vectorBuilder();
recordBuilder();
showElements();
}
public static void recordBuilder(){
try{
for(int i=0;i<listElements.size();i++){
record.setId((String) listElements.elementAt(i));
record.setName((String) listName.elementAt(i));
record.setDate((String) listDate.elementAt(i));
record.setPrice(((Integer) listPrice.elementAt(i)).intValue());
record.setAbstract((String) listAbstract.elementAt(i));
a.addElement(record);
}
}catch (Exception e){
System.out.println("Record Builder Error: " + e.getMessage());
}
}
public static void vectorBuilder(){
//Ben
listElements.addElement("1");
listName.addElement("Ben");
listPrice.addElement(502);
listDate.addElement("2012-05-12");
listAbstract.addElement("Ben is a Good Boy");
//Kesha
listElements.addElement("2");
listName.addElement("Kesha");
listPrice.addElement(367);
listDate.addElement("2012-02-24");
listAbstract.addElement("Kesha Works hard in her school work");
//Catty
listElements.addElement("3");
listName.addElement("Catty");
listPrice.addElement(100);
listDate.addElement("2012-01-04");
listAbstract.addElement("Catty is a preety girl");
}
public static void showElements(){
for(int i=0;i<a.size();i++)
{
rec r = (rec) a.elementAt(i);
System.out.println("ID:"+r.getId()+" and Name:"+r.getName()+" and Price:"+r.getPrice()+" and Msg:"+r.getAbstract());
}
}
}
package testing;
public class rec {
String name;
String id;
String date;
String strAbstract;
int price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public String getAbstract() {
return strAbstract;
}
public void setAbstract(String strAbstract) {
this.strAbstract = strAbstract;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
您需要在调用
recordBuilder
时创建新的rec。如果您不创建新的记录
相同的实例将被更新,这就是您获得重复的原因
for(int i=0;i<listElements.size();i++){
rec record = new rec();
record.setId((String) listElements.elementAt(i));
record.setName((String) listName.elementAt(i));
record.setDate((String) listDate.elementAt(i));
record.setPrice(((Integer) listPrice.elementAt(i)).intValue());
record.setAbstract((String) listAbstract.elementAt(i));
a.addElement(record);
}
for(int i=0;i您有一个额外的;在私有静态向量listElements=new Vector();;之后;感谢用户1394965noticeing@ejobity:不客气。很高兴它对您有所帮助。非常感谢您对标准的建议。:-)