Java Tableau avec plusieurs types de données
Ce que je peux utiliser pour stocker différents types de données Int/String/etc.? Je viens d'une PHP de fond où je peux stocker différents types de données dans un tableau, mais je ne sais pas comment le faire en Java.
Prenez cet exemple:
$array = array(
"val1" => 1,
"val2" => "cat",
"val3" => true
);
Comment puis-je faire quelque chose de similaire en Java?
Jetez un oeil à HashMaps.
Vous n'avez pas à définir vos valeurs à l'aide d'une table de hachage?
Comment est-ce un doublon? Je suis en désaccord. C'est une question différente de celle qu'elle est marquée d'un double d'.
Fermé donc je ne peux pas répondre, mais je préfère utiliser un typesafe hétérogène conteneur comme décrit dans l'efficacité de Java (et liés à plus tôt dans cette phrase). Le typesafe hétérogène contenant résout le problème de la récupération d'objets, plus tard, en vous permettant de trouver la classe de ce qui est stocké à chaque emplacement dans la carte.
Vous n'avez pas à définir vos valeurs à l'aide d'une table de hachage?
Object[]
est votre ami et ennemiComment est-ce un doublon? Je suis en désaccord. C'est une question différente de celle qu'elle est marquée d'un double d'.
Fermé donc je ne peux pas répondre, mais je préfère utiliser un typesafe hétérogène conteneur comme décrit dans l'efficacité de Java (et liés à plus tôt dans cette phrase). Le typesafe hétérogène contenant résout le problème de la récupération d'objets, plus tard, en vous permettant de trouver la classe de ce qui est stocké à chaque emplacement dans la carte.
OriginalL'auteur Get Off My Lawn | 2014-05-30
Vous devez vous connecter pour publier un commentaire.
Java est un langage fortement typé. En PHP ou Javascript, les variables n'ont pas de type strict. Toutefois, en Java, chaque objet et primative a un type strict. Vous pouvez stocker plusieurs types de données dans un Tableau, mais vous ne pouvez l'obtenir qu'à l'arrière comme un Objet.
Vous pouvez avoir un tableau d'Objets:
Noter que 5 est autoboxed en
new Integer(5)
qui est un objet wrapper autour de l'entier 5.Toutefois, si vous voulez obtenir les données du tableau, vous ne pouvez l'obtenir qu'en tant qu'Objet. Le suivant ne fonctionne pas:
Vous devez récupérer un Objet:
Cependant, maintenant, vous ne pouvez pas rentrer à la forme originale. Vous pouvez essayer un dangereux cast:
Cependant vous ne savez pas que
o
est une Chaîne de caractères.Vous pouvez vérifier avec
instanceof
:Ce sera certainement le travail, mais vous allez avoir à
instanceof
chaque élément que vous obtenez à partir de la matrice, nécessitant un conditionnel, tant que le nombre de types d'objets stockés dans le tableau.OriginalL'auteur Anubian Noob
Vous pouvez utiliser un tableau d'objets, mais qui crée des problèmes lorsque vient le temps de récupérer les objets que vous avez stockées. Au lieu de cela je voudrais utiliser un typesafe hétérogène contenant comme décrit dans l'efficacité de Java (et liés à plus tôt dans cette phrase).
La typesafe hétérogène contenant résout le problème de la récupération d'objets, plus tard, par la cartographie des objets par leur classe. Dans votre cas, je les combiner avec d'autres structures de données - par exemple
List<Date>
,List<String>
, ouList<Integer>
, comme les classes de base pour fournir un moyen de stocker plusieurs différents types d'objets dans une collection. Puis de récupérer les valeurs que vous obtenez simplement la sous-collection, par exemple, unList<Date>
, sachant que tous les éléments qu'elle contient sont de la même classe.OriginalL'auteur Rarw