2017-01-16 2 views
0

Я пытаюсь сохранить все эти элементы, и я получаю ошибку, например java.lang.IndexOutOfBoundsException: Index: 0, Size: 0, и я не уверен, в чем мои ошибки.java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 во время работы с 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 содержит количество счетов позволяет сказать, что «п» в списке и во втором «для» цикла, наконец, заменяет новые значения и с указанием последних значений списка.

+1

попробовать отладки это –

ответ

1

Оператор:

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

создает новый пустой ArrayList, поэтому, когда вы пишете addUserInformation1.get(i) в цикл, вы пытаетесь получить доступ к элементу по индексу 0 но список все еще пусто (нет элемента в 0), поэтому вы получаете исключение.

Вы должны добавить что-то в свой список (например, вызывать метод add(...)) перед тем, как попробовать get(...) элементов.

+0

любое альтернативное решение для это. – ManjuSony

+0

Попробуйте добавить что-то вроде следующей инструкции в начале вашего второго блока 'for': ' addUserInformation1.add (new AddUserInformation()); ' –

0

Как упоминал Роберт, вы пытаетесь получить доступ к элементу, которого не существует.

Примечание: 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; 
    } 
Смежные вопросы