Ajuda

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… :slight_smile: