奇怪的ArrayList

lhj0532 2004-11-22 05:36:13
我用ArrayList储存多个一维字符串数组,取得时候不管取第几个索引,都是返回最后一个记录,请看看代码:
mResultSet = mBookKind.searchBookKind();
while(mResultSet.next())
{
mStrArray[0] = null;
mStrArray[1] = null;
mStrArray[0] = mResultSet.getString(1);
mStrArray[1] = mResultSet.getString(2);
mArrayList.add(mStrArray);
iCount ++;
}
String[] tmp = new String[2];
tmp = (String[])mArrayList.get(0);
System.out.println(tmp[0] + "---" + tmp[1]);
谢谢!!!
...全文
127 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
funcreal 2004-11-23
  • 打赏
  • 举报
回复
我是否应该如此理解:
ArrayList其实是放了一些地址,如果没有New的话ArrayList所指向的地址都是一个.
不知道我理解得是否正确?另有加分!!!谢谢!!!
你理解的不对。
其实他们没有指向任何东西的。除非你new一个。
100geOK 2004-11-23
  • 打赏
  • 举报
回复
mStrArray你从头到尾加进去的都是这个实力,而这个实例只有两个值。
你在怎么ADD,mStrArray都是同一个地址里的值。所以会有你现在的问题。
解决方法是在你的while里每次都创建一个新的ArrayList
lhj0532 2004-11-23
  • 打赏
  • 举报
回复
我是否应该如此理解:
ArrayList其实是放了一些地址,如果没有New的话ArrayList所指向的地址都是一个.
不知道我理解得是否正确?另有加分!!!谢谢!!!
lhj0532 2004-11-23
  • 打赏
  • 举报
回复
谢谢大家!
hocus 2004-11-22
  • 打赏
  • 举报
回复
...........

String[] tmp = new String[2];
for(Iterator i=mArrayList.iterator();i.hasNext();){
tmp=(String[])i.next();
System.out.println(tmp[0]+ "---" + tmp[0]);
System.out.println(tmp[1]+ "---" + tmp[1]);
}
jackkui 2004-11-22
  • 打赏
  • 举报
回复
你没有从新申请变量,始终在操作同一个变量所以,只能得到一个直。
在while中先new一下
mStrArray = new String[2];然后再使用就行了,注意是在循环中进行new操作。
launch401 2004-11-22
  • 打赏
  • 举报
回复
mStrArray[0] = mResultSet.getString(1);
mStrArray[1] = mResultSet.getString(2);
你取的东西都是一样的,当然都是一个了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧