Sort de um array de objectos JAVA

queres ordenar por bid e depois por nome?

em todo caso o que tens que implementar é a interface Comparable ou seja o metodo object1.compareTo(object2)
 
mas diz-me uma coisa? queres ordenar por que atributo?
Isso é um arraylist ou referes te a um array?
Se for um arraylist usas o compareTo e usas a interface comparable no objecto.
E depois basta fazer um sort.

Se te explicares um pouco melhor.
 
Não, quero apenas ordenar o array de bids por nome esquece o que disse do outro objecto.

mas diz-me uma coisa? queres ordenar por que atributo?
Isso é um arraylist ou referes te a um array?
Se for um arraylist usas o compareTo e usas a interface comparable no objecto.
E depois basta fazer um sort.

Se te explicares um pouco melhor.

Quero sortear o vector alfabeticamente pela variavel nome.

É um vector do genero bid[] allBids = new bid[100}; em que bid é um objecto.
 
Última edição:
ta-me a dar este erro:

Exception in thread "main" java.lang.NullPointerException
at Bid.compareTo(Bid.java:32)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)

tenho isto :

public int compareTo(Object o1) {
return (this.client_name.compareToIgnoreCase(((Bid)o1).client_name));

}

public void sort() {
Arrays.sort(bids);

}
 
NullPointerException indica que estás a tentar usar uma referência que aponta para null. O mais certo é teres um desses objectos Bid com o client_name a null. verifica-os um por um. faz debug.

--ms
 
Acabei de fazer debug e à primeira vez que entra no comparaTo ele compara os 2 objectos que estao no vector.

O problema é que depois ele sai e volta a entrar com um objecto null o que é normal visto que o vector so tem 2 objectos o resto esta null .

como é que evito isto ?
 
Acabei de fazer debug e à primeira vez que entra no comparaTo ele compara os 2 objectos que estao no vector.

O problema é que depois ele sai e volta a entrar com um objecto null o que é normal visto que o vector so tem 2 objectos o resto esta null .

como é que evito isto ?

inicializa o vector com algo ou usa algo como lista ligada
 
Isso deve-se dar porque deves ter inicializado o vector com uma dimensão fixa e não preenches-te todos. Os Vectores são containers sincronizados, por isso são mais lentos. Utiliza antes uma collection. ( Collection<Bid> bids = new ArrayList<Bid> () )
adicionas os teus elementos com o método add, e assim n ficas com nenhuma posição vazia.

--ms
 
teoricamente tb pensei o mesmo, seria melhor o uso de um arraylist ou treeset, mas por algum motivo ele pode querer usar um array, mas como já aqui disseram o compareTo serve para tudo (Se não estou em erro:P).
 
A collection serve tao bem quanto o set. O Set como o nome indica é um Conjunto logo não permitirá ter objecto cujo compareTo retorne igual. Por outro lado a Class TreeSet tem um construtor que recebe um comparator, que é o ideal para ti, pois, à medida que inseres os elementos ele ordena-te logo. Se quiseres o arraylist e ordenares no fim, é a mesma coisa.
 
A collection serve tao bem quanto o set. O Set como o nome indica é um Conjunto logo não permitirá ter objecto cujo compareTo retorne igual. Por outro lado a Class TreeSet tem um construtor que recebe um comparator, que é o ideal para ti, pois, à medida que inseres os elementos ele ordena-te logo. Se quiseres o arraylist e ordenares no fim, é a mesma coisa.

Ta tudo dito, realmente falei no Treeset por ter um funcionamento semelhante ao ArrayList, basta implementar o comparable e redefinires o compareTo. No teu caso especifico provavelmente o Treeset será a melhor opção.
 
Back
Topo