Comment stocker des objets de types différents dans un conteneur?
Je me demande si je peux avoir un tableau ( ou essentiellement une table ) avec chacun de ses éléments, un ensemble d'objets de types différents. Je veux dire, je veux créer quelque chose comme ça ( je sais que c'est incorrect dans la syntaxe, veux juste montrer mon idée ) :
List<String, int, double, Date, ... , etc > list_name
Je fais cela pour s'assurer que lorsque j'enregistre toutes ces informations de ma base de données, je vais avoir toutes ces informations dans la même entrée dans la base de données. C'est parce que j'ai fait un peu de web scraping à partir de différents sites de rassembler toutes ces données, c'est à dire dans la liste, la chaîne peut être du site A, int peut être du site B, etc. J'ai trouvé quelques informations peuvent être omises pour certaines raisons ( par exemple, pour un élément particulier de la liste, Chaîne à partir d'Un site peuvent être manquantes, d'autres données sont là, parfaitement bien. ). Si je stocke ces données dans des listes séparées, j'ai peur, il y aura une certaine incohérence des données.
Maintenant ma solution est de créer une classe, dire ClassA :
ClassA{
public String info1
public int info2
public double info3
..
..
public wtever info
}
et puis je vais avoir une liste de ClassA
Je me demandais si il ya une meilleure façon d'atteindre cet objectif?
OriginalL'auteur Biscuitz | 2012-10-11
Vous devez vous connecter pour publier un commentaire.
Oui, vous avez fait la bonne chose par la création d'une classe pour contenir toutes les valeurs.
Et, comme vous l'avez déjà noté, vous pouvez alors créer un
List
de cet objet si vous souhaitez exécuter la base de données multiples insertions et mises à jour.Beaucoup de persistance des régimes fonctionnent sur la base de la définition des classes (connu sous le nom DAOs) pour représenter les données stockées dans des tables individuelles. À l'aide d'un fournisseur de persistance qui prend en charge l'annotation des classes (comme Hibernate) peut vraiment simplifier votre interaction avec une base de données. Je vous recommande des recherches à ce sujet plus en détail.
OriginalL'auteur Duncan Jones
Vous pouvez utiliser de simples
List<java.lang.Object>
depuis toutes les classes en Java sont des sous-classes dejava.lang.Object
. Cependant, c'est source d'erreurs et peut jeter ClassCastException dans l'exécution si vous n'êtes pas de le manipuler avec soin. Comme vous l'avez mentionnéList<ClassA>
serait une bonne. Mais assurez-vous que tout est correct avecClassA
au moment de sa conception.OriginalL'auteur sakthisundar
Ce que vous pourriez faire, c'est de faire un Résumé de la Super Classe de toutes vos classes pourront étendre, et ensuite faire une liste de qui. Toute classe qui étend cette super classe puis mettre dans la même liste.
Assurez-vous de savoir quel type d'Objet vous faites affaire avec, lorsque vous manipulez votre collection.
List
deObjects
ferait la même chose?Oui, mais vous pourriez avoir des problèmes avec la conversion de type.
OriginalL'auteur OmniOwl
Je voudrais faire la même chose, c'est à dire la création d'un objet représentant l'ensemble des choses que vous voulez sauvegarder (peut-être il y a une notion de domaine caché derrière?) et puis avoir une liste de ce type.
OriginalL'auteur acerisara
Ta façon de créer une classe pour la tenue de ces différents types de propriétés semble bonne.
Ensuite, vous pouvez utiliser un
ArrayList
, une mise en œuvre deList
interface comme ceci:Et puis vous pouvez remplir et de le manipuler facilement.
Pour vos opérations de base de données, je vous conseille d'utiliser DAO(data access object) classes et mappeur catégories afin de faciliter vos opérations de persistance avec votre source de données.
OriginalL'auteur Juvanis
Depuis tous(une vérité avec modérations) objets en Java hériter de
Object
, vous pouvez écrireList<Object>...
et de jeter les objets chaque fois que vous en avez besoin. Gardez à l'esprit que cela vous oblige à avoir un contrôle absolu sur ce qui classe les différents objets.Si vous lisez bien la question, je ne pense pas que ce soit une bonne solution.
OriginalL'auteur EvenLisle