Estou fazendo um trabalho e estou tento um problema com o metodo Collections.sort(), aparece a seguinte menssagem:
Bound mismatch: The generic method sort(List) of type Collections is not applicable for the arguments (ArrayList). The inferred type Livro is not a valid substitute for the bounded parameter <T extends Comparable<? super T>>
aqui esta a parte do programa
[code] public static ArrayList BuscaPorTitulo(String titulo) throws Exception{
ArrayList resposta = new ArrayList<>();
for(Livro obj : livro){
if(obj.getTitulo().contains(titulo)){
resposta.add(obj);
}
}
if(resposta.isEmpty()){
throw new Exception(“Não existe livros para o titulo informado.”);
}
if(resposta.size()>1){
Collections.sort(resposta);
}
}[/code]
sera que alguem pode me ajudar?
O seu objeto Livro precisa implementar a interface Comparable<Livro>.
Isso serve para garantir ao método sort que o método compareTo(Livro o) está presente na sua classe Livro. (Ou então, como ele poderia executar esse código?)
Você vai retornar 3 inteiros:
-> 1 (quando o atual - this - vier ANTES do passado no parâmetro);
-> 0 (quando o atual - this - for exatamente IGUAL, em termos de ordenação, do passado no parâmetro);
-> -1 (quando o atual - this - vier DEPOIS do passado no parâmetro);
Obrigado Rafael, resolveu meu problema.
[quote=Rafael Guerreiro]O seu objeto Livro precisa implementar a interface Comparable<Livro>.
Isso serve para garantir ao método sort que o método compareTo(Livro o) está presente na sua classe Livro. (Ou então, como ele poderia executar esse código?)
Você vai retornar 3 inteiros:
-> 1 (quando o atual - this - vier ANTES do passado no parâmetro);
-> 0 (quando o atual - this - for exatamente IGUAL, em termos de ordenação, do passado no parâmetro);
-> -1 (quando o atual - this - vier DEPOIS do passado no parâmetro);[/quote]
Complementando… Os valores não precisam ser necessariamente esses. Basta que seja 0 (quando iguais), qualquer número positivo (no lugar de 1) ou qualquer número negativo (no lugar de -1).
Isso permite que um comparador de inteiros seja implementado assim:
return valor1 - valor2;
[quote=ViniGodoy]Complementando… Os valores não precisam ser necessariamente esses. Basta que seja 0 (quando iguais), qualquer número positivo (no lugar de 1) ou qualquer número negativo (no lugar de -1).
Isso permite que um comparador de inteiros seja implementado assim:
return valor1 - valor2;
Muito bom! Eu não sabia disso… 