2017-01-16 51 views
0

我試圖存儲所有這些元素,我得到像java.lang.IndexOutOfBoundsException: Index: 0, Size: 0錯誤,我不知道我的錯誤是什麼。java.lang.IndexOutOfBoundsException:Index:0,Size:0 while ArrayList

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」循環終於取代了新的價值,並顯示最後一個列表值。

+1

嘗試調試它 –

回答

1

聲明:

List<AddUserInformation> addUserInformation1 = new ArrayList<AddUserInformation>();

創建新的空ArrayList,所以當你在for循環寫addUserInformation1.get(i)你想在索引0訪問元素,但名單仍空(在0沒有元素),所以你會得到異常。

在嘗試使用get(...)元素之前,您必須在列表中添加內容(例如,調用add(...)方法)。

+0

任何替代的解決方案這個。 – ManjuSony

+0

請嘗試在第二個'for'塊的開頭添加如下語句: 'addUserInformation1.add(new AddUserInformation());' –

0

正如Robert提到的那樣,您試圖訪問一個不存在的元素。

注:List<AddUserAccountDetails> 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; 
    } 
相關問題