Comment puis-je créer et récupérer des tableaux associatifs en Java comme je le peux en PHP?
Par exemple:
$arr[0]['name'] = 'demo';
$arr[0]['fname'] = 'fdemo';
$arr[1]['name'] = 'test';
$arr[1]['fname'] = 'fname';
Comment puis-je créer et récupérer des tableaux associatifs en Java comme je le peux en PHP?
Par exemple:
$arr[0]['name'] = 'demo';
$arr[0]['fname'] = 'fdemo';
$arr[1]['name'] = 'test';
$arr[1]['fname'] = 'fname';
Java ne prend pas en charge les tableaux associatifs, mais cela pourrait facilement être réalisé en utilisant a Map
. Par exemple,
Map<String, String> map = new HashMap<String, String>();
map.put("name", "demo");
map.put("fname", "fdemo");
// etc
map.get("name"); // returns "demo"
Encore plus précis dans votre exemple (puisque vous pouvez remplacer String par n'importe quel objet qui répond à vos besoins) serait de déclarer:
List<Map<String, String>> data = new ArrayList<>();
data.add(0, map);
data.get(0).get("name");
NullPointerException
si la carte externe ne contient pas de carte pour l'entrée0
. PHP n'est-il pas plus permissif avec $ arr [0] ['nom'] (je ne connais pas du tout ce langage)?ArrayList
dans presque tous les cas en raison de différences de performances (inattendues?). Mais c'est une autre discussion.HashMap
, et certainement pas sans comparer intentionnellement le comportement et trouver un meilleur facteur de charge pour votre cas d'utilisation. La seule raison de spécifier une taille initiale est si vous savez à l'avance que la carte sera très grande.HashMap
ne gaspille pas (beaucoup) de mémoire s'il est vide, mais si vous avez l'intention de créer une grande carte, vous pouvez enregistrer plusieurs redimensionnements de tableau en spécifiant sa taille à l'avance.Java n'a pas de tableaux associatifs comme PHP.
Il existe différentes solutions pour ce que vous faites, comme l'utilisation d'une carte, mais cela dépend de la façon dont vous souhaitez rechercher les informations. Vous pouvez facilement écrire une classe contenant toutes vos informations et en stocker des instances dans un fichier
ArrayList
.Puis...
Vous pouvez donc y accéder comme ...
la source
Vous pouvez accomplir cela via Maps. Quelque chose comme
Mais lorsque vous commencez à utiliser Java, je suis sûr que vous constaterez que si vous créez une classe / un modèle qui représente vos données, ce seront vos meilleures options. je ferais
la source
Il n'y a pas de tableau associatif en Java. Son parent le plus proche est a
Map
, qui est fortement typé, mais a une syntaxe / API moins élégante.C'est le plus proche que vous pouvez obtenir en fonction de votre exemple:
la source
LazyMap.decorate
etInstantiateFactory
et tout ça pour?Regardez l' interface Map et la classe concrète HashMap .
Pour créer une carte:
Pour ajouter une paire valeur / clé:
Pour récupérer la valeur associée à une clé:
Et bien sûr, vous pouvez créer un tableau de cartes, car cela semble être ce que vous voulez:
la source
Eh bien, j'étais également à la recherche d'un tableau associatif et j'ai trouvé la liste des cartes comme la meilleure solution.
la source
Équivalent Java du hachage de Perl
la source
Java n'a pas de tableaux associatifs, la chose la plus proche que vous pouvez obtenir est l' interface Map
Voici un exemple de cette page.
Si exécuté avec:
Tu auras:
la source
Tableaux associatifs en Java comme en PHP:
Plus d'informations, voir Class SoftHashMap: https://shiro.apache.org/static/1.2.2/apidocs/org/apache/shiro/util/SoftHashMap.html
la source
Utilisez ArrayList <Map <String, String>>
Voici un exemple de code:
Production :
produits: [{id = 0001, name = prod1}, {id = 0002, name = prod2}]
la source
Dans JDK 1.5 (http://tinyurl.com/3m2lxju), il y a même une note: "REMARQUE: cette classe est obsolète. Les nouvelles implémentations devraient implémenter l'interface Map, plutôt que d'étendre cette classe." Cordialement, N.
la source
Oui, cela nécessite une itération pour rechercher la valeur par clé, mais si vous en avez besoin, ce sera le meilleur choix.
la source
En fait, Java prend en charge les tableaux associatifs, ils sont appelés dictionnaires!
la source
En y réfléchissant davantage, je voudrais jeter les tuples comme un moyen plus général de résoudre ce problème. Bien que les tuples ne soient pas natifs de Java, j'utilise des Javatuples pour me fournir la même fonctionnalité qui existerait dans d'autres langues. Un exemple de la façon de traiter la question posée est
J'aime cette approche car elle peut être étendue à des triplets et à d'autres groupements d'ordre supérieur avec des classes et des méthodes fournies par l'API.
la source
Concernant le commentaire de PHP «Non, PHP ne l'aimerait pas». En fait, PHP continuerait à chugging à moins que vous ne définissiez des niveaux d'exception / erreur très restrictifs (pour PHP), (et peut-être même pas à ce moment-là).
Ce qui arrivera par défaut, c'est qu'un accès à un élément de tableau variable / hors limites 'désactive' la valeur que vous attribuez. NON, ce n'est PAS nul. PHP a une lignée Perl / C, d'après ce que je comprends. Il y a donc: des variables non définies et non existantes, des valeurs qui SONT définies mais sont NULL, des valeurs booléennes fausses, puis tout le reste des langages standard. Vous devez tester ces éléments séparément, OU choisir l'évaluation DROITE intégrée à la fonction / syntaxe.
la source