Kotlin Очередь возвращаемого объекта - PullRequest
0 голосов
/ 02 апреля 2020

Я пытаюсь создать очередь из списка

, пока у меня есть это

var queue = LinkedList<Array<IntArray>>()
queue.add(arrayOf(intArrayOf(1,2,0)))
queue.add(arrayOf(intArrayOf(3,4,5)))
Log.d("debugVal",queue.poll()[0].toString())

Возвращает что-то вроде этого

D/debugVal: [I@81fc7ad

Я ожидал этого чтобы напечатать 1

Я думаю, что это возвращает объект. Может кто-нибудь подскажите, пожалуйста, как извлечь значения списка из опрашиваемого элемента Мне нужны все три значения из каждого опрашиваемого элемента

Ответы [ 2 ]

1 голос
/ 02 апреля 2020

Элемент, возвращаемый методом queue.poll(), представляет собой Array<IntArray>, а не IntArray. Когда вы звоните queue.poll()[0], вы получаете первый элемент этого Array<IntArray>, поэтому IntArray. Если вы хотите получить первый элемент IntArray, вам следует позвонить queue.poll()[0][0]:

var queue = LinkedList<Array<IntArray>>()
queue.add(arrayOf(intArrayOf(1, 2, 0)))
queue.add(arrayOf(intArrayOf(3, 44, 10)))
Log.d("debugVal", queue.poll()[0][0].toString())

Кроме того, поскольку вы сказали, что ожидаете, что он напечатает 3, помните, что poll() удаляет первый элемент, а не последний. Если вы хотите удалить последний, вы можете позвонить pollLast() вместо poll().

0 голосов
/ 02 апреля 2020

Похоже, что я помещал Array of Array в очередь

правильный код должен быть

var queue = LinkedList<Array<Int>>()
queue.add(arrayOf(1,2,0))
queue.add(arrayOf(3,4,5))
Log.d("alpha",queue.poll()[0].toString())

Теперь я получаю 1, как и ожидалось

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...