Ajuda

4 respostas
B

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 >

aqui esta a parte do programa

public static ArrayList<Livro> BuscaPorTitulo(String titulo) throws Exception{
		ArrayList<Livro> 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);
		}
	}

sera que alguem pode me ajudar?

4 Respostas

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);
B

Obrigado Rafael, resolveu meu problema.

ViniGodoy

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);</blockquote>

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;
Rafael_Guerreiro

[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:

Criado 11 de maio de 2014
Ultima resposta 12 de mai. de 2014
Respostas 4
Participantes 3