Créer un Tableau de Arraylists

Je suis désireux de créer un tableau de liste de tableaux comme ci-dessous:

ArrayList<Individual>[] group = new ArrayList<Individual>()[4]

Mais ce n'est pas la compilation. Comment puis-je faire cela?

  • Ne pas mélanger les tableaux et les collections. En fait, ne pas utiliser des tableaux à moins de traiter avec les primitives (ou vous savez ce que vous faites). Les tableaux sont une convivialité cauchemar, ils font de votre code difficile à maintenir.
  • donc, vous devriez éviter de arraylists et les tableaux? (en parlant de types java). Sont les listes de l'alternative?
  • une arraylist est une liste qui est soutenue par un tableau. Les listes sont beaux, y compris arraylists.
  • Merci. Bon à savoir 🙂
  • Pouvez-vous expliquer pourquoi les tableaux sont de la convivialité cauchemar?
  • assurez-vous. un tableau ne peut pas se développer, vous ne pouvez pas insérer d'objet dans un tableau, un tableau n'est pas de remplacer les méthodes standard sur un pied d'égalité hashcode ou toString etc.
  • ok-je besoin d'exactement quatre arraylists -- j'ai l'intention de faciliter l'accès à chacun par l'indice -- je n'ai pas besoin de l'extérieur de la matrice de l'agrandissement ou la réduction -- je n'ai pas besoin toString ou hashcode, etc. -- pour moi, un tableau est le choix évident ici -- que voulez-vous recommander comme une alternative à cette situation?
  • alors susceptibles de tomber dans le "ou vous savez ce que vous faites" de la catégorie. Je ne dis pas que les tableaux ne doivent jamais être utilisés, mais dans 99% des cas d'utilisation, les collections sont le meilleur ajustement. Lire aussi Efficace Java Article 25: Préférez les Listes de Tableaux
  • Bon c'est une vieille question, mais je vais demander quand même et voir si quelqu'un a des réponses. Je vois tout le monde parler de pourquoi un tableau de listes est une très mauvaise idée, de mauvaises pratiques de codage, etc. J'ai regardé ce parce que je suis en train d'apprendre à faire les chaînes de hachage, et la définition d'une valeur de hachage de la chaîne est un tableau de listes! Alors, comment exactement une centrale de programmation de la structure de données de terribles pratiques de codage? Ou est-ce que cela tomber dans le IYKWYD catégorie mentionné par @Sean?
  • et pourquoi ne pouvez-vous pas utiliser une liste de listes à la place?
  • en raison de la façon dont les listes d'éléments sont récupérés par opposition aux tableaux. Un tableau a une adresse directe, ce qui signifie que les éléments[7] est à l'emplacement de la mémoire items[0] + 7*la taille de la mémoire de l'article. C'est un O(1) opération, puis que vous la recherche de la taille relativement petite liste de ce tableau. Une liste est une série de liens à partir d'un élément à l'autre. Si c'est une liste et je dis éléments.get(7) il doit passer par toutes les 7 éléments pour obtenir de la 7ème élément - pas une grosse affaire si c'est seulement 7, mais si c'est l'élément.get(10000) puis c'est tout. C'est un O(n) opérations, ce qui est beaucoup, beaucoup plus lent, si vous êtes travailler avec de grands ensembles de données.
  • c'est vrai pour les Listes chaînées, mais une ArrayList est le meilleur des deux mondes: il a l'efficacité de tableaux et la facilité d'utilisation des listes (il y a une petite marge pour le conteneur de liste, mais pas beaucoup)
  • Je n'ai pas fait tout cela en place. C'est une structure de base de données que vous allez voir dans quel début de Structures de Données et Algorithmes manuel.
  • Je ne dis pas que vous l'avez fait. Je dis que dans CS termes, une ArrayList est plus comme un tableau que comme une liste. La liste est juste une interface, avec des implémentations différentes. Celui-ci utilise des tableaux en interne
  • ok, c'est peut-être vrai. Je ne savais pas que sur la liste de tableaux. J'imagine, parce que ça s'appelle une liste j'ai supposé que c'était plus comme une liste. Je vais le chercher.

InformationsquelleAutor user | 2011-12-19