Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Colletions .sort - não esta funcionado

Olá, Estou tentando fazer um Colletions.sort com o codigo abaixo, no entanto estou com problemas no .sort Alguem pode me ajudar?

Classe com atributos

package br.com.list.arrays;

public class Guitarras {

    int codigo;
    String modeloGuitarra;
    String marca;
    double espessuraCorda;

Classe com main....

package br.com.list.arrays;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

public class GuitarrasMain {

    public static void main(String[] args) {

        Guitarras Stratocaster = new Guitarras(3, "Stratocaster", "Fender", 0.10);

        Guitarras LesPaul = new Guitarras(1, "Les Paul", "Gibson", 0.11);

        Guitarras Telecaster = new Guitarras(2, "Telecaster", "Fender", 0.09);

        Guitarras SuperStrato = new Guitarras(4, "SuperStrato", "Fender", 0.09);

        List<Guitarras> listaGuitarras = new ArrayList<>();

        listaGuitarras.add(Stratocaster);
        listaGuitarras.add(LesPaul);
        listaGuitarras.add(Telecaster);
        listaGuitarras.add(Stratocaster);

        listaGuitarras.forEach(guitarra -> {
            System.out.println("Guitarra " + guitarra);
        });
        Collections.sort(listaGuitarras);
        System.out.println(listaGuitarras);

    }

};

Obrigado

2 respostas
solução!

Opa, não tem como vc aplicar o sort diretamente nessa coleção porque Guitarra não implementa a interface Comparable. Pense que não tem como o compilador descobrir como vc quer que compare uma guitarra com a outra, ordenar pelo código? modelo? preço?

Então vc precisa ou implementar Comparable em guitarra ou criar um Comparator. Aqui tem mais informações:

https://blog.caelum.com.br/ordenando-colecoes-com-comparable-e-comparator/amp/

Obrigado Rodrigo, havia feito anteriormente com Comparable e deu certo....no entanto não havia entendido sua aplicação... Com sua resposta fez muito mais sentido. Obrigado