Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Passando a lista para o metodo sort

boa noite, tentei fazer um código parecido, mas nao compila e retorna que o argumento nao e aplicável. No vídeo o professor passou uma lista para o método sort e deu certo mas no meu deu esse erro. Eis o código:

package RatLab.com;

public class Caixa implements Comparable<Caixa>{

    public String getNumeroDaCaixa() {
        return numeroDaCaixa;
    }
    public String getLinhagem() {
        return linhagem;
    }

    public Caixa(String numeroDaCaixa, String linhagem) {
        super();
        this.numeroDaCaixa = numeroDaCaixa;
        this.linhagem = linhagem;
    }
    @Override
    public String toString() {
        return "(Caixa "+ this.numeroDaCaixa + " , Linhagem: "+this.linhagem+")";
    }
    @Override
    public int compareTo(Caixa outraCaixa) {

        return this.linhagem.compareTo(outraCaixa.getLinhagem());
    }

    private String numeroDaCaixa, linhagem;

}


package RatLab.com;

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

public class Rack {

    private int numero;
    private char lado;
    private List<Caixa> caixas = new ArrayList<Caixa>();

    public Rack(int numero, char lado) {
        this.numero = numero;
        this.lado = lado;

    }

    public int getNumero() {
        return numero;
    }

    public char getLado() {
        return lado;
    }

    public List<Caixa> getCaixas() {
        return Collections.unmodifiableList(caixas);
    }

    public void adiciona(Caixa caixa) {
        this.caixas.add(caixa);
    }

    public List<Caixa> ordenaCaixas() {
        this.caixas.sort(Comparator.comparing(Caixa::getLinhagem));

        return Collections.unmodifiableList(caixas);
    }

    public void ordenaCaixas(Rack rack) {
        rack.caixas.sort(Comparator.comparing(Caixa::getLinhagem));

    }
}
package RatLab.com;

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

public class testaRack {
    public static void main(String[] args) {
        Rack rack = new Rack(1, 'a');
        List<Caixa> caixas = rack.getCaixas();
        System.out.println(caixas);

        rack.adiciona(new Caixa("P18/044", "C57"));
        rack.adiciona(new Caixa("P18/0001", "C57"));
        rack.adiciona(new Caixa("P18/0002", "Balb"));
        rack.adiciona(new Caixa("P18/0003", "Wistar"));
        rack.adiciona(new Caixa("P18/0004", "CD1"));
        System.out.println(caixas);


        List<Caixa> caixasOrdenaveis = new ArrayList<>(caixas);
        caixasOrdenaveis.sort(caixas);
        System.out.println(caixas);
    }
}

o erro de compilação ocorre nas ultimas linhas.

1 resposta
solução!

Ja vi meu erro, nao chamei o metodo sort da classe colections, por isso deu errado.