Comment puis-je mettre en œuvre imbriquée ArrayList?
Je veux mettre en œuvre une structure de données qui ressemble à quelque chose comme ça.
{{RowID, N1, N2, N3},
{RowID, N4, N5, N6},
{RowID, N7, N8, N9}}
Et s'en va. Essentiellement, il s'agit d'un tableau Java avec 3 colonnes et RowID.
Quelle structure de données dois-je utiliser et comment l'appliquer comme dans le code?
Qu'avez-vous essayé? Avez-vous lu sur la collection Java Api (indice: Carte, HashMap, Liste, liste de tableaux).
OriginalL'auteur js0823 | 2010-11-08
Vous devez vous connecter pour publier un commentaire.
En supposant que RowID est long, et les données de la colonne sont des Doubles, je voudrais mettre en œuvre cette construction:
Pour stocker une ligne:
D'accéder à une ligne:
Remplacer Double[] avec tout type de données que vous désirez Int[], String[], Object[] ...
Vous pouvez faire une boucle par ces données avec un itérateur:
Pour itérer les données dans l'ordre des données a été insérée, l'utilisation LinkedHashMap en place de la table de hachage.
OriginalL'auteur Scott
Faire une liste de tableaux de ArrayLists. E. g.:
OriginalL'auteur Rafe Kettler
Il y a plusieurs options. Une solution est de déclarer une classe qui représente une ligne.
Évidemment vous de choisir des types de données et les noms de variables.
Ensuite, vous pouvez créer une liste de tableaux de ce type:
Ceci est particulièrement utile si le nombre de colonnes ne variera pas.
OriginalL'auteur Vincent Ramdhanie
Vous pouvez utiliser un
Map<Integer, ArrayList<MyObject>>
où la clé de la carte serait votre RowID.OriginalL'auteur mR_fr0g
Je voudrais créer un bean objet qui contient les données de chaque ligne. Qui a un avantage sur une "liste de tableaux imbriqués" parce que les données membres sont fortement typés.
Ensuite, je voudrais insérer ces haricots dans une Liste, probablement une LinkedList, sauf si vous savez le nombre d'eux à l'avance. Si oui, je voudrais passer à une liste de tableaux.
Si l'ordre n'est pas important, vous pouvez utiliser un HashSet ou HashMap au lieu de cela, selon si vous êtes seulement de l'itération (Set) ou la nécessité de faire les recherches par clé RowID (Map). Si vous utilisez l'un de ces structures de données, vous aurez besoin de remplacer
equals()
ethashCode()
pour votre bean.ArrayList
est généralement leList
de mise en œuvre lorsque vous n'avez pas d'idée précise de la façon dont la liste sera utilisée, je ne dirais pasLinkedList
est presque toujours une mauvaise idée. Si vous n'allez pas faire tout accès aléatoire sur la liste et sera l'ajout ou la suppression d'éléments de la liste,LinkedList
peut-être bien plus rapide, par exemple. Juste besoin de connaître les coûts relatifs des différentes opérations sur chaque type et de ce que vous allez faire.A obtenu une référence pour qui? Je suis curieux de savoir.
Découvrez ce blog et correspondant microbenchmark par Jesse Wilson à Google qui montre combien il est facile
LinkedList
beatsArrayList
pour un cas d'utilisation comme je l'ai décrit.Je pense que la question centrale ici est que nous ne savons pas comment la question asker est à l'aide de la structure de données. Il existe plusieurs implémentations: outre le lien/la liste des ensembles, un ensemble de hachage/carte peut également être utile. Sans plus d'information, nous ne savons tout simplement pas.
OriginalL'auteur
Java fournit la liste de casting, donc, par exemple, vous pouvez le faire de la manière suivante:
OriginalL'auteur kiedysktos