在使用ArrayList时遇到一个比较奇怪的问题,下面是这段代码:
javacode:
//定义模拟出荷物CD信息List
ArrayList<shukkabutsuCd> shukkabutsuCdList = new ArrayList<shukkabutsuCd>();
shukkabutsuCd shukkabutsu = new shukkabutsuCd();
//情况1:出荷物情报中全部不为空
shukkabutsu.setShukkabutsuCd("S001");
shukkabutsu.setProdctCd("版本A");
shukkabutsu.setProdctVrsn("V1.1");
shukkabutsu.setHimmokuCd("品目A");
shukkabutsu.setHimmokuVrsn("V1.1");
shukkabutsu.setOsCd("A");
shukkabutsuCdList.add(shukkabutsu);
//情况2:出荷物情报中产品部分为空
shukkabutsu.setShukkabutsuCd("S002");
shukkabutsu.setProdctCd(null);
shukkabutsu.setProdctVrsn(null);
shukkabutsu.setHimmokuCd("品目A");
shukkabutsu.setHimmokuVrsn("V1.1");
shukkabutsu.setOsCd("A");
shukkabutsuCdList.add(shukkabutsu);
上面的javacode中,shukkabutsuCd为一个javabean;这段代码执行后shukkabutsuCdList中并没有出现我想得到的数据,而是出现了2条第二种情况的数据。
百思不得其解,不知道哪位可以解释下。
javacode:
//定义模拟出荷物CD信息List
ArrayList<shukkabutsuCd> shukkabutsuCdList = new ArrayList<shukkabutsuCd>();
shukkabutsuCd shukkabutsu = new shukkabutsuCd();
//情况1:出荷物情报中全部不为空
shukkabutsu.setShukkabutsuCd("S001");
shukkabutsu.setProdctCd("版本A");
shukkabutsu.setProdctVrsn("V1.1");
shukkabutsu.setHimmokuCd("品目A");
shukkabutsu.setHimmokuVrsn("V1.1");
shukkabutsu.setOsCd("A");
shukkabutsuCdList.add(shukkabutsu);
//情况2:出荷物情报中产品部分为空
shukkabutsu.setShukkabutsuCd("S002");
shukkabutsu.setProdctCd(null);
shukkabutsu.setProdctVrsn(null);
shukkabutsu.setHimmokuCd("品目A");
shukkabutsu.setHimmokuVrsn("V1.1");
shukkabutsu.setOsCd("A");
shukkabutsuCdList.add(shukkabutsu);
上面的javacode中,shukkabutsuCd为一个javabean;这段代码执行后shukkabutsuCdList中并没有出现我想得到的数据,而是出现了2条第二种情况的数据。
百思不得其解,不知道哪位可以解释下。
解决方案 »
- 重写了equals和hashcode方法为什么用==判断返回false???
- 一个main函数调用Ejb
- synchronized锁定变量吗
- JFormattedTextField实现DocumentFilter接口问题
- 新年里怎么做这个程序?
- JCreator DOS 窗口问题
- 使用dom4j读取xml文档时,老是报以下错误!
- 100分向多线程高手求救!!!急急!!!!!!
- [email protected]快来,谢谢你的资料。不要等到晚上了。
- 怎样用script实现某段html随滚动条滚动的效果?最好能给源代码?或者给出能看到源代码的链接也可以
- 正则问题?
- 在线等! java 网络聊天 问题
//情况1:出荷物情报中全部不为空
shukkabutsu.setShukkabutsuCd("S001");
shukkabutsu.setProdctCd("版本A");
shukkabutsu.setProdctVrsn("V1.1");
shukkabutsu.setHimmokuCd("品目A");
shukkabutsu.setHimmokuVrsn("V1.1");
shukkabutsu.setOsCd("A");
shukkabutsuCdList.add(shukkabutsu);
//情况2:出荷物情报中产品部分为空
shukkabutsu = new shukkabutsuCd();//加上这句
shukkabutsu.setShukkabutsuCd("S002");
shukkabutsu.setProdctCd(null);
shukkabutsu.setProdctVrsn(null);
shukkabutsu.setHimmokuCd("品目A");
shukkabutsu.setHimmokuVrsn("V1.1");
shukkabutsu.setOsCd("A");
shukkabutsuCdList.add(shukkabutsu);
你在添加第二条记录的前,加上
shukkabutsu = new shukkabutsuCd();
新建一个对象,加入到ArrayList中
之后,加上如下一条语句:
shukkabutsu = new shukkabutsuCd();
你在第二次装载的时候你可以从新new一个对象,然后装载数据,明白吗?
第二个把第一个给覆盖了。
然后在定义一个shukkabutsuCd;把2号数值SET进去;
你的做法只是定义了一个shukkabutsuCd ;所以在你SET 1进去之后 又SET 2进去,1 就会被覆盖了咩...
不过我尝试了下下面的代码:
javacode:
ArrayList<String> l = new ArrayList<String>();
String s = new String();
s = “aaa”;
l.add(s);
s = "bbb";
l.ass(s);
运行过后在ArrayList l 中有两个元素“aaa”,“bbb”。并没有出现覆盖的情况,望指教各位!
ArrayList <shukkabutsuCd> shukkabutsuCdList = new ArrayList <shukkabutsuCd>();
shukkabutsuCd shukkabutsu = new shukkabutsuCd();
//情况1:出荷物情报中全部不为空
shukkabutsu.setShukkabutsuCd("S001");
shukkabutsu.setProdctCd("版本A");
shukkabutsu.setProdctVrsn("V1.1");
shukkabutsu.setHimmokuCd("品目A");
shukkabutsu.setHimmokuVrsn("V1.1");
shukkabutsu.setOsCd("A");
shukkabutsuCdList.add(shukkabutsu);
//情况2:出荷物情报中产品部分为空
shukkabutsu = new shukkabutsuCd(); //这里要重新new一个!
shukkabutsu.setShukkabutsuCd("S002");
shukkabutsu.setProdctCd(null);
shukkabutsu.setProdctVrsn(null);
shukkabutsu.setHimmokuCd("品目A");
shukkabutsu.setHimmokuVrsn("V1.1");
shukkabutsu.setOsCd("A");
shukkabutsuCdList.add(shukkabutsu);
shukkabutsuCd shukkabutsu = new shukkabutsuCd();
//这里你只定义了一个对象shukkabutsu.setShukkabutsuCd("S001"); //附值给ShukkabutsuCd
shukkabutsu.setShukkabutsuCd("S002"); //再一次附值给ShukkabutsuCd
你这两次附值都是给了同一个对象下面的属性;就是同一个 shukkabutsu ;所以会把前一个值给覆盖掉! s = “aaa”; //字符串附值;重新生成的字符串,地址不相同,把S指向“aaa"
l.add(s);
s = "bbb";
l.ass(s);