java.lang.IndexOutOfBoundsException:使用ArrayList时索引为0,大小为0
我试图存储所有这些元素,但我得到了类似java.lang.IndexOutOfBoundsException的错误:Index:0,Size:0,我不确定我的错误是什么java.lang.IndexOutOfBoundsException:使用ArrayList时索引为0,大小为0,java,list,exception,arraylist,Java,List,Exception,Arraylist,我试图存储所有这些元素,但我得到了类似java.lang.IndexOutOfBoundsException的错误:Index:0,Size:0,我不确定我的错误是什么 public List<AddUserInformation> insertData(AddUserDetail user) { List<AddUserInformation> inserted = null; try{ List<AddUserInformatio
public List<AddUserInformation> insertData(AddUserDetail user) {
List<AddUserInformation> inserted = null;
try{
List<AddUserInformation> addUserInformation = new ArrayList<AddUserInformation>() ;
ArrayList accName = new ArrayList();
for (int i = 0; i < user.getListofaccounts().toArray().length ; i++) {
accName.add(user.getListofaccounts().get(i).getAccountName());
}
List<AddUserInformation> addUserInformation1 = new ArrayList<AddUserInformation>();
for (int i = 0; i< accName.toArray().length; i++) {
addUserInformation1.get(i).setUserID(user.getUserId());
addUserInformation1.get(i).setUsername(user.getUsername());
addUserInformation1.get(i).setPassword(user.getPassword());
addUserInformation1.get(i).setEmailid(user.getEmailid());
List<AddUserAccountDetails> adduseraccountdetails = new ArrayList<>();
addUserInformation1.get(i).setAccountName(user.getListofaccounts().get(i).getAccountName());
addUserInformation1.get(i).setPermission_id(user.getListofaccounts().get(i).getPermission_id());
}
inserted = adduserInformationDao.saveAddUserInfo(addUserInformation1);
} catch (Exception e) {
LOGGER.error("Exception in adding of account to a user " + user.getUsername(), e);
}
return inserted;
}
问题是accName包含帐户数,让我们说“n”作为列表,并在第二个for循环中最终替换新值并显示最后一个列表值。语句:
List addUserInformation1=新的ArrayList
创建一个新的空ArrayList,因此当您在for循环中写入addUserInformation1.geti时,您试图访问索引0处的元素,但列表仍然为空,0处没有元素,因此您会得到异常
您必须将某些内容添加到列表中,例如,调用添加。。。方法,然后再尝试获取。。。元素。正如Robert提到的,您试图访问一个不存在的元素
注意:列表adduseraccountdetails=new ArrayList;它从未被使用过
您可以创建AddUserInformation类的对象,然后将其添加到列表中,如下所示:
public List<AddUserInformation> insertData(AddUserDetail user) {
List<AddUserInformation> inserted = null;
try{
List<AddUserInformation> addUserInformation = new ArrayList<AddUserInformation>() ;
ArrayList accName = new ArrayList();
for( int i = 0; i < user.getListofaccounts().toArray().length ; i++ ) {
accName.add(user.getListofaccounts().get(i).getAccountName());
}
List<AddUserInformation> addUserInformation1 = new ArrayList<AddUserInformation>();
for(int i = 0; i< accName.toArray().length; i++) {
AddUserInformation obj = new AddUserInformation ();
obj.setUserID(user.getUserId());
obj.setUsername(user.getUsername());
obj.setPassword(user.getPassword());
obj.setEmailid(user.getEmailid());
obj.setAccountName(user.getListofaccounts().get(i).getAccountName());
obj.setPermission_id(user.getListofaccounts().get(i).getPermission_id());
addUserInformation1.add(obj);
}
inserted = adduserInformationDao.saveAddUserInfo(addUserInformation1);
}catch (Exception e) {
LOGGER.error("Exception in adding of account to a user " + user.getUsername(), e);
}
return inserted;
}
请尝试在第二个for块的开头添加类似以下语句的内容:addUserInformation1.addnew AddUserInformation;