Сохраните int в ArrayList и верните его обратно в примитивную переменную int — Java

#java #arraylist #int

#java #arraylist #int

Вопрос:

Я получаю сообщение об ошибке и не могу найти, как ее решить.

Я добавляю int в ArrayList .

 int n = 1;
ArrayList list = new ArrayList();
list.add( n );
  

Далее я пытаюсь поместить его обратно в другой int:

 grid[ y ][ x ] = list.get(0);
  

Я также пробовал это:

 grid[ y ][ x ] = (int) list.get(0);
  

Но это не работает, я получаю эту ошибку:

 found   : java.lang.Object
required: int
grid[ y ][ x ] = (int)list.get(0);
                              ^
  

Я надеюсь, что кто-нибудь сможет мне помочь.

Комментарии:

1. Как выглядит объявление grid ?

Ответ №1:

Используйте параметр типа, а не необработанный ArrayList :

 ArrayList<Integer> list = new ArrayList<Integer>();
  

Ошибка, которую вы получаете, заключается в том, что вы не можете привести Object к int , там происходит сбой автоматической упаковки. Вы могли бы привести его к Integer , а затем автоматически добавить в int , но использование параметра type — гораздо лучшее решение.

Ответ №2:

Используйте ArrayList<Integer> . Когда вы это сделаете list.get() , вы получите Integer значение, которое вы можете вызвать intValue() , чтобы получить int

Ответ №3:

(Integer)list.get(0) сделает свое дело. Автоматическая распаковка затем преобразует его в int автоматически

Ответ №4:

основное различие между Array-list и Arrays заключается в том, что Array-list может хранить в нем только объекты, но не примитивные типы данных (в вашем случае integer ). поэтому, чтобы решить эту проблему, мы используем ArrayList<Integer> list = new ArrayList<Integer>(); Thank you.

Ответ №5:

Вы можете создать ArrayList как:

 ArrayList<Integer> List = new ArrayList<Integer>();
  

и затем сделайте то же самое, эта проблема возникает из-за того, что ArrayList может хранить элементы только в форме объектов, потому что он является частью инфраструктуры коллекций в Java, и в нем все хранится в форме объектов. Таким образом, он преобразует примитивный int в его класс-оболочку Integer, что вызывает проблему.