AJBM Posted July 17, 2012 at 03:47 PM Report Share #469016 Posted July 17, 2012 at 03:47 PM (edited) Boas! Eu tenho esta classe e queria ordenar pelo numero, alguem me pode dar uma dica public class Utilizador { private String nome; private String password; private String tipo; private long numero; public Utilizador(String nome, String password, long numero, String tipo) { this.setNome(nome); this.setPassword(password); this.setTipo(tipo); this.setNumero(numero); } public Utilizador( String password, long numero) { this.setPassword (password); this.setNumero(numero); } @Override public String toString() { return "Utilizador{" + "nome=" + nome + ", password=" + password + ", tipo=" + tipo + ", numero=" + numero + '}'; } @Override public boolean equals(Object obj) { if (obj == null) { return false; } if (getClass() != obj.getClass()) { return false; } final Utilizador other = (Utilizador) obj; if (this.numero != other.numero) { return false; } return true; } @Override public int hashCode() { int hash = 3; hash = 83 * hash + (int) (this.numero ^ (this.numero >>> 32)); return hash; } public long getNumero() { return numero; } public final void setNumero(long numero) { this.numero = numero; } /** * @return the nome */ public String getNome() { return nome; } /** * @return the password */ public String getPassword() { return password; } /** * @param nome the nome to set */ public final void setNome(String nome) { if (nome != null || !nome.trim().equals("")) { this.nome = nome; } } /** * @param password the password to set */ public final void setPassword(String password) { if (password == null || password.trim().equals("")) { } else { this.password = password; } } /** * @return the tipo */ public String getTipo() { return tipo; } /** * @param tipo the tipo to set */ public final void setTipo(String tipo) { this.tipo = tipo; } } Edited July 17, 2012 at 04:57 PM by Baderous geshi Link to comment Share on other sites More sharing options...
jpedro20 Posted July 17, 2012 at 05:21 PM Report Share #469021 Posted July 17, 2012 at 05:21 PM E a tua classe que tem um conjunto de utilizadores? Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 17, 2012 at 05:53 PM Report Share #469026 Posted July 17, 2012 at 05:53 PM http://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#sort(java.util.List) IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
AJBM Posted July 18, 2012 at 10:21 AM Author Report Share #469113 Posted July 18, 2012 at 10:21 AM Eu estou a utilizar arrays,e fiz este método ele ordena os números, o erro acho que esta aqui conjUtilizadores= conjUtilizadores[j] String ordenarListar() { String dados = ""; long[] tmp = new long[conjUtilizadores.length]; for (int i = 0; i < conjUtilizadores.length; i++) { tmp[i] = conjUtilizadores[i].getNumero(); } Arrays.sort(tmp); for (int i = 0; i < conjUtilizadores.length; i++) { for (int j = 0; j < conjUtilizadores.length; j++) { if(tmp[i]==conjUtilizadores[j].getNumero()){ conjUtilizadores[i]=conjUtilizadores[j]; } } } for (int i = 0; i < conjUtilizadores.length; i++) { dados=dados+i+"-"+conjUtilizadores[i].getNome()+"\n"; } return dados; } Link to comment Share on other sites More sharing options...
joelbrito Posted July 18, 2012 at 11:34 AM Report Share #469138 Posted July 18, 2012 at 11:34 AM (edited) Dá uma vista de olhos neste exemplo: http://www.javadeveloper.co.in/java-example/java-comparator-example.html É mais simples, e penso que mais eficaz e correcto... Edited July 18, 2012 at 11:35 AM by joelbrito Engenharia de Sistemas Informáticos @ IPCA "Estou convencido de que cerca de metade do que separa os empreendedores de sucesso daqueles malsucedidos é a pura perseverança." - Steve Jobs Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 18, 2012 at 11:36 AM Report Share #469139 Posted July 18, 2012 at 11:36 AM ?? para que esse código todo ?? o Array.sort já te faz o que pretendes !!! String ordenarListar() { String dados = ""; long[] tmp = new long[conjUtilizadores.length]; for (int i = 0; i < conjUtilizadores.length; i++) { tmp[i] = conjUtilizadores[i].getNumero(); } Arrays.sort(tmp); /* ISTO NÃO FAZ NADA !!! QUERE ORDENAR O QUE JÁ ESTÁ ORDENADO ?? for (int i = 0; i < conjUtilizadores.length; i++) { for (int j = 0; j < conjUtilizadores.length; j++) { if(tmp[i]==conjUtilizadores[j].getNumero()){ conjUtilizadores[i]=conjUtilizadores[j]; } } } */ for (int i = 0; i < conjUtilizadores.length; i++) { dados=dados+i+"-"+conjUtilizadores[i].getNome()+"\n"; } return dados; } IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
AJBM Posted July 18, 2012 at 12:13 PM Author Report Share #469143 Posted July 18, 2012 at 12:13 PM obrigado ja consegui 👍 ?? para que esse código todo ?? o Array.sort já te faz o que pretendes !!! String ordenarListar() { String dados = ""; long[] tmp = new long[conjUtilizadores.length]; for (int i = 0; i < conjUtilizadores.length; i++) { tmp[i] = conjUtilizadores[i].getNumero(); } Arrays.sort(tmp); /* ISTO NÃO FAZ NADA !!! QUERE ORDENAR O QUE JÁ ESTÁ ORDENADO ?? for (int i = 0; i < conjUtilizadores.length; i++) { for (int j = 0; j < conjUtilizadores.length; j++) { if(tmp[i]==conjUtilizadores[j].getNumero()){ conjUtilizadores[i]=conjUtilizadores[j]; } } } */ for (int i = 0; i < conjUtilizadores.length; i++) { dados=dados+i+"-"+conjUtilizadores[i].getNome()+"\n"; } return dados; } Eu tenho um array que tem utilizadores. E os utilizadores como atributos nome numero etc, e eu queria ordenar por numero, então criei um array só com os números, e ordenei mas depois tinha que atribuir os números aos utilizadores, para isso utilizei tmp==conjutilizadores[j].getNumero() o utilizador que estava na posição i ficava com o conteúdo da posição j. Ou seja ficava os utilizadores ordenados Link to comment Share on other sites More sharing options...
HappyHippyHippo Posted July 18, 2012 at 12:24 PM Report Share #469147 Posted July 18, 2012 at 12:24 PM se queres ordenar objetos num array tens , java.util.Comparator)]Array.sort(array_of_objects, comparator) IRC : sim, é algo que ainda existe >> #p@p Portugol Plus Link to comment Share on other sites More sharing options...
Guest skinie18 Posted July 21, 2012 at 03:49 AM Report Share #469470 Posted July 21, 2012 at 03:49 AM (edited) Tens de adicionar isto ao tua classe: public class Utilizador implements Comparable<Utilizador>{ isso vai te obrigar a adicionar a tua class o metodo: @Override public int compareTo(Utilizador t) { if(getNumero() > t.getNumero()) return 1; else if(getNumero() < t.getNumero()) return -1; else return 0; } Depois disto para ordenares o teu array basta fazer: Arrays.sort(conjUtilizadores); Edited July 21, 2012 at 03:49 AM by skinie18 Link to comment Share on other sites More sharing options...
Baderous Posted July 21, 2012 at 11:02 AM Report Share #469487 Posted July 21, 2012 at 11:02 AM https://wiki.portugal-a-programar.pt/dev_geral/java/ordernarlistas/ Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now