java.lang.IndexOutOfBoundsException: индекс: 0, размер: 0 Java 8 - PullRequest
0 голосов
/ 10 сентября 2018
ABC abc = eMsg.getAbcCont().stream()
                        .filter(cnt -> (option.geiID().equals(cnt.getId()) && option.getIdVersion() == cnt.getIdVersion()))
                        .collect(Collectors.toList()).get(0); 
delEmsg.getAbcCont().remove(abc);

Выше код дает мне исключение как

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:657)
at java.util.ArrayList.get(ArrayList.java:433)

getAbcCont метод вернет список объектов ABC. В настоящее время мой eMsg содержит два объекта с getAbcCont. Когда контроль достигает .collect(Collectors.toList()).get(0);, это дает вышеупомянутое исключение. Любое предложение помощи должно быть оценено.

1 Ответ

0 голосов
/ 10 сентября 2018

Это означает, что результат после фильтра равен нулю элементов, поэтому вы не можете сделать get(0).

Быстрое решение для этого будет сначала получить список элементов обратно, а затем проверить, есть лиПо крайней мере один элементВам может потребоваться проверить, найден ли элемент, прежде чем пытаться вызвать remove(), используя объект abc.Я подозреваю, что попытка удалить null из коллекции может ничего не сделать, но вы можете проверить это!

if(abc != null){
 delEmsg.getAbcCont().remove(abc);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...