LinkedList застрял в бесконечном цикле. Попробуй получить следующий узел

При попытке получить следующий узел в LinkedListзастревает в бесконечном цикле. Это не захватывает новый.

Видимо, я не звоню getNext() в следующем пункте я вызываю его на первом узле, поэтому он возвращает только второй узел.

Любая помощь приветствуется.

    public static final GroundItem[] getGroundItemsAt(final int x, final int y) {
    try {
        final Object deque = Game.getGroundItems()[Game.getPlane()][x][y];

        if (deque == null) {
            return null;
        }
        Deque deq = new Deque(deque);
        ArrayList<GroundItem> list = new ArrayList<>();
        Object holder = deq.getHead();
        Node hold = new Node(holder);
        Object curNode = hold.getNext();
        Node cur = new Node(curNode);
       //HERE IS WHERE LOOP STARTS
        while (cur != null && cur != hold && cur != deq.getHead()) {

            Object groundItem = cur;
            final OtherItem groundIt = new OtherItem(groundItem);
            System.out.println("X: " + x + " Y: " + y + " cur: " + cur);
            list.add(new GroundItem(groundIt, x, y));
            curNode = cur.getNext(); //Trying to grab next item
            //stuck in infinite loop now.....
        }
        return list.toArray(new GroundItem[list.size()]);
    } catch (Exception e) {
        e.printStackTrace();
    }
    return null;
}

1 ответ

Цикл проверяет переменную cur но вы меняете только переменную curNode, поэтому цикл всегда будет обрабатывать один и тот же элемент.

Другие вопросы по тегам