2
respostas

Função remove

Olá! Tomei liberdade de implementar a remove antes que chegasse em Listas Duplamente Ligadas, segue o codigo:

    private boolean hasLessThanTwo(){
        return totalOfElements <= 1;
    }

    public void remove(int position) {
        if (hasLessThanTwo()) {
            removeAtBeginning();
        } else {
            Cell previous = getCellByPosition(position - 1);
            Cell current = getCellByPosition(position);

            previous.setNext(current.getNext());
            current.setNext(null);
        }
    };

O problema é que estou recebendo o log de erro abaixo durante a execução e não sei como resolver

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "Cell.getElement()" because "current" is null
    at LinkedList.toString(LinkedList.java:123)
    at java.base/java.lang.String.valueOf(String.java:3367)
    at java.base/java.io.PrintStream.println(PrintStream.java:1047)
    at Main.linkedListCalls(Main.java:49)
    at Main.main(Main.java:57)
2 respostas

Ja descobri meu erro, era só decrementar totalOfElements. Também não necessário o current.setNext(null);

Código atualizado para quem se interesse:

    private boolean hasLessThanTwo(){
        return totalOfElements <= 1;
    }

    public void remove(int position) {
        if (hasLessThanTwo()) {
            removeAtBeginning();
        } else {
            Cell previous = getCellByPosition(position - 1);
            Cell current = previous.getNext();

            previous.setNext(current.getNext());
            totalOfElements--;
        }
    };

Muito bem Beatriz, obrigado por compartilhar a solução. Bons estudos

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software