java中List<E>的get(index)用法

public void setTbEmailPop3Smtp(Integer Id ,int user) {

List<TbEmailPop3Smtp> listfind = daos.getDbFindDAO().findbytbemailpop3smtp(
"from TbEmailPop3Smtp a where a.tbUser="+user);
int i,j=listfind.size();
for(i=0;i<j;i++)
{TbEmailPop3Smtp invent = (TbEmailPop3Smtp) listfind.get(i);
if(invent.getPkid()==Id)
{
invent.setIsuse(1);
}else invent.setIsuse(0);
daos.getDbEditDAO().edit(invent);
System.out.print("shit");

}
我这段代码的意思大概是这样的,用一个for循环把List<TbEmailPop3Smtp>
中的数据和id比较,然后相等的吧其中一个属性Isuse设为1,其他的设为0
但是运行了结果好像不能改变,是不是get(i)不能这么用?其他的地方我确定没错……
是把pikid和id相等的object的一个属性isuse设为1
我吧System.out.print("shit");放在invent.setIsuse(1);上面可以读到

呵呵,忘了告诉大家乐,这个代码没错,是软件运行模式错了,重登就可以了
最新回答
念如丝缕

2024-11-05 00:21:54

get(index)就是获取到List对象中下标为“index”的值。
解释:
List对象通过泛型的形式先定义一个对象类型,之后只需要通过add方法增加对象,之后通过get方法获取到对象的值的形式来灵活的实现参数传递。
举例:
List<E> list = new ArrayList<E>();//定义一个list的泛型

list.add((E)"StringBatch");//给list增加字符串对象,实际上已经强制转换为“E”类型
list.get(0);//获取到对象的第一个存储值。
备注:如果获取的”index“值不存在,就会报错数组越界,所以开发过程中一定多加注意。
中指朝天一声操

2024-11-05 00:42:15

TbEmailPop3Smtp invent = (TbEmailPop3Smtp) listfind.get(i);
在这个地方的后面加上System.out.println(invent.getPkid());作跟踪调查,看看输出什么,就知道get(i)有没有用了。

daos.getDbEditDAO().edit(invent);
还有这里是把更改的数据存起来吗?
如果不是,那你需要加一个存到数据库里面的步骤。因为你变的list的值,是放在内存里面的,想查还是查不到的。

如果是将list存起来,那就多作跟踪语句,就可以判断。我遇到问题经常这样处理的哈。

祝你调试程序成功。由于代码不详细,只能说到这里。因为我看这段代码也没问题。get(i)就是你写的那样的用法

楼上的,你搞错了吧? list能操作对象的属性?
LZ有问题的话,百度继续M我
仲夏柠叶香

2024-11-05 00:20:57

List<E>的get(index)拿出来的是List里面元素的reference,这点你用的没有错,调用这个reference的方法将直接作用到List里面的元素(实例)上去。
建议你step in调试这个方法,看看invent.setIsuse(1);有没有得到执行。
快乐很简单

2024-11-05 00:42:53

用JDK1.5以后的那个for循环来搞不就行了,不用用到get方法

for(TbEmailPop3Smtp invent:listFind){
if(invent.getPkid()==Id)
{
invent.setIsuse(1);
}else invent.setIsuse(0);
daos.getDbEditDAO().edit(invent);
System.out.print("shit");
}
试一下这段看看
是我,辜负了爱』

2024-11-05 00:36:32

你调错对象了.

你set 的对象应该是listfind
而不是你新建的对象invent
............................
你可以读到是因为你那是访问的是invent