como que eu ordeno uma collection? COLLECTION e nao LIST!
vlw
como que eu ordeno uma collection? COLLECTION e nao LIST!
vlw
Não ordena. Algumas coleções não são ordenaveis (é o caso do Set, por exemplo).
O que você deve fazer é usar o construtor de cópia de uma das coleções ordenáveis (ArrayList ou TreeSet) para copiar os dados de sua Collection, e então ordena-los.
Por exemplo, no caso de uma coleção de Integers:
public List<Integer> elementosOrdenados(Collection<Integer> algumaCollection) {
List<Integer> listaOrdenada = new ArrayList<Integer>(algumaCollection); //Faz a cópia
Collections.sort(listaOrdenada);
return listaOrdenada;
}
Note que o resultado é o que você queria, uma Collection ordenada.
Fala Viny,
Então, se eu usar um List, não sei pq cargas d’agua da um ClassCastException…só funciona quando eu chamo o iterator direto
Dentro do Bean, tem um método que retorna uma collection, uma collection que contém diversos atributos statics e não sei pq só funciona se eu usar:
Iterator i = UF.getUFs().iterator();
O que diz o seu ClassCastException?
e o código dessa linha
List listaWee = new ArrayList();
listaWee = (List)UF.getUFs().iterator();
Alguma idéia?
Se você vai usar um Map ou um Set, é melhor usar um que já esteja ordenado naturalmente, como é o caso do TreeSet ou TreeMap. (O LinkedHashSet ou LinkedHashMap seguem a ordem de inserção, não a ordem “lexicográfica” como se costuma dizer.)
e como seria isso thingol?
pq aquele getUFs() retorna uma Collection!
Eu falei em usar o construtor de cópia, não fazer um cast.
List listaWee = new ArrayList(UF.getUFs());
Com cast não funciona mesmo.
Se o tal método retorna uma Collection, e você não sabe o que a tal Collection é na verdade, faça como o ViniGodoy lhe aconselhou - ele já te deu uma receitinha de bolo, é só seguir.
Continua com classcast
List listaWee = new ArrayList(UF.getUFs());
Esse getUFs(), é um método static, sera que isso tem alguma coisa a ver?
private static final transient Map UF_SIGLA_MAPPING = new HashMap(26);
public static Collection getUFs() {
return UF_SIGLA_MAPPING.values();
}
Acho que deve ser algo ai =o
Qual é o ClassCast que dá agora?
Realmente não devia estar dando.
List listaWee = new ArrayList(UF.getUFs());
**linha 28
Collections.sort(listaWee);
Um ClassCast exception na linha do sort pode ocorrer pelos seguintes motivos:
Acho a primeira mais provável.
Realmente é difícil saber o que deve ser ordenado em br.com.impressao.common.adt.uf.UF se você não der a descrição da classe. Será a sigla da unidade federativa, ou então o nome? Ou então algum código interno?
unidade federativa…é que a classe ta bem grande…
opa
consegui resolver
fiz o conselho di Viny de colocar o Comparator e resolveu
vlw ae
[]'s
Opa pessoal!
Tenho uma pergunta… que acho que ja sei a resposta…
Fico gravando um log no prevayler…
um objeto do tipo Dado…
Gravo um Dado por segundo e funciona normalmente… durante algumas horas…
dps ele para de listar os dados e mostra o seguinte erro?
Eis a minha pergunta:
Qual o tamanho maximo que pode atingir o arrayList?
java.lang.NullPointerException
at br.com.pacote.persistencia.Dado.compareTo(Dado.java:590)
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.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.mergeSort(Unknown Source)
at java.util.Arrays.mergeSort(Unknown Source)
at java.util.Arrays.sort(Unknown Source)
at java.util.Collections.sort(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at sun.rmi.server.UnicastServerRef.dispatch(Unknown Source)
at sun.rmi.transport.Transport$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(Unknown Source)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Hein? O que? Como? Onde? Quando?
Esse tópico já tava fazendo aniversário…
O tamanho máximo de um arrayList é o de um int de elements (4 bilhões), ou a memória reservada para o Java. O que acabar primeiro. Normalmente é a segunda.
Agora, o seu erro é de NullPointerException, o que significa que um dos atributos usados na comparação está nulo.
Descubra qual é.