Como saber o tipo de objeto dentro de um ArrayList?

7 respostas
Luiz_Henrique_Coura

ae galera!!

como faço para saber o tipo de objeto dentro de um ArrayList.

ex.:

Tenho um ArrayList que dependendo do caso terá somente valores de Strings ou Doubles.

os tratamentos dos dados não são identicos no processo, assim eu preciso saber o tipo do dado para continuar.

dependendo do que o ArrayList conter eu chamarei métodos diferentes.

então, como saber o tipo de objeto dentro de um ArrayList?

valew pessoal!

7 Respostas

W

usa o “instanceof” para saber se um dado objeto é instancia da classe…

por ex:

Object o = arrayList.get(0);

if(o instanceof Double)
   System.out.println("e instance de Double!!!");
}
A

“Luiz Henrique Coura”:
ae galera!!

como faço para saber o tipo de objeto dentro de um ArrayList.

ex.:

Tenho um ArrayList que dependendo do caso terá somente valores de Strings ou Doubles.

os tratamentos dos dados não são identicos no processo, assim eu preciso saber o tipo do dado para continuar.

dependendo do que o ArrayList conter eu chamarei métodos diferentes.

então, como saber o tipo de objeto dentro de um ArrayList?

valew pessoal!

Tenta isso :

String aux = "teste";
ArrayList list = new ArrayList();
list.add(aux);
System.out.println(list.get(0).getClass());
Rafael_Nunes
for(int i = 0; i < arrList.size(); i++) {
   if(arrList.get(i) instanceof String){
      metodoString(); 
   }else if (arrList.get(i) instanceof Double) {
      metodoDouble();
   }else if {
      metodoGeral();
    }
}

Mais ou menos isso?!?

V

Meio estranho isso que você quer…

Não seria mais interessante você ter uma classe com dois atributos, um Double e um String. Assim você guarda uma instancia dela dentro do ArrayList

[]´s

Luiz_Henrique_Coura

o que eu desejo fazer é um array de valores únicos: string, double ou date.

esses valores serão usados para popular um gráfico, e pra isso todos os valores, para um determinado gráfico, tem de ser do mesmo tipo, pois na hora da construção do gráfico as classes que são trabalhadas exigem que os valores sejam, números, datas ou strings, nunca um e outro ao mesmo tempo.

então o que eu pensei:

crio uma classe chamada ParameterChart com os atributos:

String title; //título da categoria
ArrayList values; //valores dessa série
ArrayList series; //onde ocorreu determinado valor

para cada valor de series eu teria um values, exemplo:
series - values
05/09/1999 - 52.4
06/09/1999 - 55.1
07/09/1999 - 48.7

ou

series - values
1.5 - 4.5
1.8 - 4.0
2.1 - 4.2

repare que o valor de séries pode ser do tipo date, string ou double(número), nunca tipos diferentes juntos.

então cada instância de ParameterChart eu guardaria em um ArrayList e na hora de montar um gráfico eu apenas passaria esse Array para a classe responsável pela montagem. dentro desse método cada objeto ParameterChart seria retirado desse ArrayList e usado para alimentar um gráfico.

então, antes de montar o gráfico, eu preciso saber que tipo de dado está sendo enviado dentro do ArrayList(series) de ParameterChart para poder chamar o método correto para tratar esse dado.

essa é minha idéia.
o que vc acha, estou fazendo certo?
tem alguma sugestão?

valew pela atenção!!

T

Vamos baixar um pouco o nível para ver se é fácil de entender.

Quando você tem uma tabela de pares, tais como você mostrou, há aqueles que preferem montar 2 arrays (o que “junta” os dois arrays é um índice), tal como:

String nomes[] = {"joao", "jose", "julio"};
String sobrenomes[] = {"barbosa", "oliveira", "cavalcanti"};

e outros que preferem montar um array de pares, tal como:

public class Usuario { 
    public String nome, sobrenome; 
    public Usuario(String n, String s) { nome = n; sobrenome = s; }
}
Usuario[] usuarios = {new Usuario("joao", "barbosa"), new Usuario("jose", "oliveira"), new Usuario("julio", "cavalcanti")};

onde cada objeto já “junta” os pares.

Vamos ver o que é melhor.

a) A segunda opção é mais “OOP” (orientada a objeto) que a primeira.

b) Para ordenar os dois arrays “nomes” e “sobrenomes” de forma que eles fiquem “pareados” corretamente (primeira opção), você precisa copiar o algoritmo de sort de algum lugar (por exemplo, de java.util.Arrays) e fazer com que a cada vez que você troque as posições de dois “nomes”, você troque as posições dos “sobrenomes” equivalentes.
Para ordenar o array “usuarios” basta escrever uma função “compareTo” e passar para o método sort da classe “java.util.Arrays”.

c) A primeira opção gasta menos memória e parece ser mais rápida para vários usos, mas não é muito flexível e requer um pouco de atenção com índices.

Então veja o que é melhor para você no seu caso: se é melhor ter um ArrayList de pares, ou então um par de ArrayLists.

Luiz_Henrique_Coura

hmmm!!

entendi. realmente fica mais flexível criando essa classe de pares, vou dar uma analisada nesse caso.

valew pela dica Thingol!
valews, pessoal!

Criado 26 de agosto de 2004
Ultima resposta 1 de set. de 2004
Respostas 7
Participantes 6