List <object> para um int[]....[RESOLVIDO]

Existe algum comando que faça a converssão de uma listagem (List) para um array de inteiros (int[]) ou terei que fazer um for e passar um a um do List e transformar para inteiro (Integer.parseInt(…)) ?
Obs…o conteúdo do List são objetos, porém sempre vem números e não um objeto complexo com vários campos …

[quote=leopoldof]Existe algum comando que faça a converssão de uma listagem (List) para um array de inteiros (int[]) ou terei que fazer um for e passar um a um do List e transformar para inteiro (Integer.parseInt(…)) ?
Obs…o conteúdo do List são objetos, porém sempre vem números e não um objeto complexo com vários campos …[/quote]

Calma, estamos falando em Inteiros ou array de int. Ambos são objetos, mas são obviamente, distintos.
Se é uma lista genérica, ou seja, com Object, tu precisa fazer a conversão item a item, pois terá de indicar explicitamente o tipo de objeto que tu tem e quer que seja “transformado”. Se eu entendi errado, pode postar um código com exemplo do que tu quer, fica mais fácil.

Nel,

Já tive problemas com isso, e a melhor forma que encontrei foi convertendo o objeto para String para depois parsear para inteiro

Segue sugestão…


for (int i =0;i< lista.size(); i++){

Integer.parseInt(Objeto.get(i).toString)

}

[quote=gasabi]Nel,

Já tive problemas com isso, e a melhor forma que encontrei foi convertendo o objeto para String para depois parsear para inteiro

Segue sugestão…

[code]

Integer.parseInt(Objeto.toString)

[/code][/quote]

toString() ? Tem que conhecer a implementação do toString(). Para wrappers funciona, mas senão for…
É que tem que entender o que ele precisa.

[quote=nel][quote=gasabi]Nel,

Já tive problemas com isso, e a melhor forma que encontrei foi convertendo o objeto para String para depois parsear para inteiro

Segue sugestão…

[code]

Integer.parseInt(Objeto.toString)

[/code][/quote]

toString() ? Tem que conhecer a implementação do toString(). Para wrappers funciona, mas senão for…
É que tem que entender o que ele precisa.[/quote]

Caso essa sugestão não resolva, deixe ele explicar melhor…

Então…tenho um List que é retornado por um outro método assim


List lstCdDup = getListDuplicatasClientes(cdCliente);

Isto me retorna uma listagem com os códigos…ou seja números, porém é retornado como um list de Objetos já pelo método que é chamado

porém presciso que esse lstCdDup seja transformado para um array de int para posterior comparação com outro array em que vou comparar os inteiros

eu achei como transformar para Integer daí ficaria assim

Integer [] retorno = (Integer[]) lstCdDupj.toArray(new Integer[lstCdDup.size()]);

Dessa maneira ele até tranforma para Integer, porém presciso de int[] , pois o outro array que vou fazer a comparação é int[]

O que eu queria era achar uma forma que não utilizasse um for, pois não sei o tamanho da listagem que vem…
e creio que os métodos parser já implementados do java devem ser beeeemmm mas rápidos que os que vou implementar…
Mas se não houver outro jeito… terei que fazer um for e ler item a item para gerar o array de int[]

[quote=gasabi][quote=nel][quote=gasabi]Nel,

Já tive problemas com isso, e a melhor forma que encontrei foi convertendo o objeto para String para depois parsear para inteiro

Segue sugestão…

[code]

Integer.parseInt(Objeto.toString)

[/code][/quote]

toString() ? Tem que conhecer a implementação do toString(). Para wrappers funciona, mas senão for…
É que tem que entender o que ele precisa.[/quote]

Caso essa sugestão não resolva, deixe ele explicar melhor…[/quote]

Na realidade não dei nenhuma sugestão, não uma “direta”. Eu entendi algo mas seria adequado ele confirmar antes de passar uma possível solução e/ou sugestão.

[quote=leopoldof]Então…tenho um List que é retornado por um outro método assim


List lstCdDup = getListDuplicatasClientes(cdCliente);

Isto me retorna uma listagem com os códigos…ou seja números, porém é retornado como um list de Objetos já pelo método que é chamado

porém presciso que esse lstCdDup seja transformado para um array de int para posterior comparação com outro array em que vou comparar os inteiros

eu achei como transformar para Integer daí ficaria assim

Integer [] retorno = (Integer[]) lstCdDupj.toArray(new Integer[lstCdDup.size()]);

Dessa maneira ele até tranforma para Integer, porém presciso de int[] , pois o outro array que vou fazer a comparação é int[]
[/quote]

Qual a diferença de comparar um Integer[] e um int[] ? Não vejo alguma…
Bom, não é possível. Apesar do array ser um objeto, o int é um tipo primitivo, por isso não existe essa “conversão direta” igual fez para o Integer. Se quiser gerar o int[], é na “unha” mesmo.

Na verdade … os metodos utilizados mais adiante no código , retornam todos arrays de int ou seja int[] e não Integer[]… e não posso modificar os outros métodos, pois são usados em várias partes do sistema…

Bom…vou fazer na unha mesmo então…falew pela atenção de vcs…muito obrigado

Mas se você for comparar um a um, não tem problema. Agora se tentar enviar um Integer[] pra um método que recebe int[], aí sim vai dar pau. Rode o seguinte teste: public static void main(String[] args){ int[] nums = new int[10]; Integer[] wrapperNums = new Integer[10]; for(int i=0 ; i<10 ; i++){ nums[i] = i; wrapperNums[i] = i; System.out.println(nums[i] == wrapperNums[i]); } }

[quote=leopoldof][quote]
Qual a diferença de comparar um Integer[] e um int[] ? Não vejo alguma…
[/quote]

Na verdade … os metodos utilizados mais adiante no código , retornam todos arrays de int ou seja int[] e não Integer[]… e não posso modificar os outros métodos, pois são usados em várias partes do sistema…

Bom…vou fazer na unha mesmo então…falew pela atenção de vcs…muito obrigado[/quote]

Se vai usar essa conversão em vários pontos do sistema, crie uma classe Utils que faça isso á você. Repetir código em vários pontos normalmente (ou sempre) é ruim.

[quote=digaoneves]Mas se você for comparar um a um, não tem problema. Agora se tentar enviar um Integer[] pra um método que recebe int[], aí sim vai dar pau. Rode o seguinte teste: public static void main(String[] args){ int[] nums = new int[10]; Integer[] wrapperNums = new Integer[10]; for(int i=0 ; i<10 ; i++){ nums[i] = i; wrapperNums[i] = i; System.out.println(nums[i] == wrapperNums[i]); } }[/quote]

O ideal é no array “wrapperNums” usar na comparação o método intValue(). Garante que não irá usar referência. Assim:

System.out.println(nums[i] == wrapperNums[i].intValue());

Cara, de qualquer forma, mesmo que exista uma forma direta de fazer isso, a biblioteca que vc vier a usar, vai usar loop para alimentar seu array…

:smiley:

Obrigado pelas sujestões…vou implementar aqui utilizando um for… e criar uma biblioteca separada para conversões desse tipo…obrigado pelas idéias…

Mas cara, você pode usar o array de Integer que você tinha formado antes para comparar. não precisa de um array de int[], a não ser é claro, que vá enviá-lo como parâmetro para algum outro método que receba int[].

Mas cara, você pode usar o array de Integer que você tinha formado antes para comparar. não precisa de um array de int[], a não ser é claro, que vá enviá-lo como parâmetro para algum outro método que receba int[].[/quote]

é o que ele fala aqui digaoneves…