/
Tenho uma List de Aluno
private List<Aluno> aluno = new ArrayList<Aluno>();
[code]public class Aluno{
private int numMatricula;
private String nomeAluno;
private String cursoAluno;
}[/code]
Já esta Ordenada, quero fazer um sistema de BinarrySearch, entrando com o Numero de Matricula que retorna um Aluno;
[code]public Aluno busca(int numMatricula) {
…
}[/code]
Como poderia implementar esta busca??
/
select nome from tabela where inumMatricula =
Olá
Na sua classe Aluno implemente a interface Comparable e utilize o método binarySearch da classe Collections
exemplo:
public class Aluno implements Comparable<Integer> {
private Integer numMatricula;
private String nomeAluno;
private String cursoAluno;
@Override
public int compareTo(Integer o) {
return numMatricula.compareTo(o);
}
}
public Aluno busca(int numMatricula) {
return alunos.get(Collections.binarySearch(aluno, numMatricula) ;
}
Lembrando que esse código acima pode lançar uma IndexOutOfBoundsException
/
Tipow eu ja to usando o metodo CompareTo pra ordenar minha List com Collections.sort. olhe o codigo…
[code]
public class Aluno implements Comparable{
private int numMatricula;
private String nomeAluno;
private String cursoAluno;
public String getCursoAluno() {
return cursoAluno;
}
public void setCursoAluno(String cursoAluno) {
this.cursoAluno = cursoAluno;
}
public String getNomeAluno() {
return nomeAluno;
}
public void setNomeAluno(String nomeAluno) {
this.nomeAluno = nomeAluno;
}
public int getNumMatricula() {
return numMatricula;
}
public void setNumMatricula(int numMatricula) {
this.numMatricula = numMatricula;
}
public int compareTo(Aluno a) {
if(this.getNumMatricula() > a.getNumMatricula()) return 1;
if(this.getNumMatricula() < a.getNumMatricula()) return -1;
else return 0;
}
}[/code]
Usando do jeito que você falou deu erro nao sei se eh por causa do Comparable
ja troquei para Comparable + nao adiantou, continuou dando mesmo erro
usei isto
public int compareTo(int o) {
return numMatricula.compareTo(o);
}
deu este erro
Então jorgecc,
implemente desta maneira,
public class Aluno implements Comparable<Integer> {
private Integer numMatricula;
....
@Override
public int compareTo(Integer o) {
return numMatricula.compareTo(o);
}
}
deixando Comparable , e mude seu atributo numMatricula de int para Integer
Eu fiz desta forma Forma funcionou a busca binaria, mais meu outro metodo deixou de funcionar, meu Collections.sort era assim
public int compareTo(Aluno a) {
if(this.getNumMatricula() > a.getNumMatricula()) return 1;
if(this.getNumMatricula() < a.getNumMatricula()) return -1;
else return 0;
}
e o sua Busca Binaria
public int compareTo(Integer o) {
return numMatricula.compareTo(o);
}
Agora se eu Coloco Comparable Funciona a Ordenaçao e se coloco Comparable Funciona a buscaBinaria
nao tem como funcionar os 2 ao mesmo tempo??
jorgecc
Outubro 9, 2007, 10:03pm
#7
/
Consegui resolver o meu problema.
Muito obrigado ao marcuscruz , me ajudou bastante
/