Sobrescrever método toString() da classe LinkedList;

3 respostas
Heartbreaker

É o seguinte, eu quero alterar a forma como será escrita a minha lista quando eu der esse comando.
Como eu faço?

3 Respostas

ViniGodoy
Não faz. Uma opção é criar um filho da LinkedList:
public class MyLinkedList<T> extends LinkedList<T> {
    @Override 
    public String toString() {
         //retorne o toString que você quiser aqui
    }
}

Outra opção é criar uma classe Wrapper

public class ListWrapper<T>
{
    private List<T> list;
    public ToStringWrapper(List<T> list) {
        this.list = list;
    }
 
    public List<T> get() {
       return list;
    }

    public void set(T list) {
       this.list = list;
    }

    @Override
    public String toString() {
        //seu código de formatação aqui
    }
}

O segundo caso dá um pouco mais de trabalho na manipulação, mas é mais genérico.
Serviria não só para suas listas, mas para qualquer lista, seja LinkedList ou não, mesmo que você não conheça o tipo.

Por exemplo:
//Que tipo de lista será que é essa?
ListWrapper<String> wrapper = new ListWrapper(Collections.unmodifiableList<String>(lista));

Na verdade, o tipo de lista retornado por aquele método é uma inner class anônima.

Heartbreaker

Muito obrigado!

hvivox
ViniGodoy:
Não faz. Uma opção é criar um filho da LinkedList:
public class MyLinkedList<T> extends LinkedList<T> {
    @Override 
    public String toString() {
         //retorne o toString que você quiser aqui
    }
}

Outra opção é criar uma classe Wrapper

public class ListWrapper<T>
{
    private List<T> list;
    public ToStringWrapper(List<T> list) {
        this.list = list;
    }
 
    public List<T> get() {
       return list;
    }

    public void set(T list) {
       this.list = list;
    }

    @Override
    public String toString() {
        //seu código de formatação aqui
    }
}

O segundo caso dá um pouco mais de trabalho na manipulação, mas é mais genérico.
Serviria não só para suas listas, mas para qualquer lista, seja LinkedList ou não, mesmo que você não conheça o tipo.

Por exemplo:
//Que tipo de lista será que é essa?
ListWrapper<String> wrapper = new ListWrapper(Collections.unmodifiableList<String>(lista));

Na verdade, o tipo de lista retornado por aquele método é uma inner class anônima.

acredito que isso resolve

Criado 11 de setembro de 2011
Ultima resposta 11 de set. de 2011
Respostas 3
Participantes 3