List + BinarrySearch

/

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??

/

Consegui resolver o meu problema.
Muito obrigado ao marcuscruz , me ajudou bastante

/