Tableau ou une Liste en Java. Ce qui est plus rapide?

J'ai garder des milliers de chaînes de caractères dans la mémoire accessible en série en Java. Dois-je stocker dans un tableau ou dois-je utiliser une sorte de Liste ?

Depuis les tableaux de conserver toutes les données dans un espace contigu de mémoire (à la différence des Listes), l'utilisation d'un tableau pour stocker des milliers de chaînes de causer des problèmes ?

  • "Depuis les tableaux de conserver toutes les données dans un espace contigu de mémoire" avez-vous une sorte de citation pour pour Java?
  • Pas de matt. Je le sais pour C. je suppose que Java serait d'utiliser la même méthode.
  • Je doute qu'il serait de les garder dans une seule partie de la mémoire.
  • Même si c'est un seul bloc de mémoire, il avait toujours autour de 1000 * 4 = 4 ko vaut la peine, ce qui n'est pas beaucoup de mémoire.
  • Est-ce un cas de l'optimisation prématurée? La bonne réponse est "Ça dépend". Cela dépend de la JVM en cours d'exécution, il dépend de la façon dont votre compilateur JIT est l'optimisation du code, cela dépend de la plate-forme que vous utilisez. Les tableaux peuvent être plus rapides dans le JET ou Aviaire , mais la liste pourrait être plus rapide sur HotSpot ou IcedTea. En bref, si c'est le degré de contrôle que vous avez besoin de plus de performances, vous devez utiliser un niveau beaucoup plus faible de la langue comme de l'assemblée ou C. Java n'est pas adapté.
  • La question (dans les commentaires au sujet de la mémoire) ne peut pas être répondu parce que la Liste est une interface non de mise en œuvre. Liste de tableaux vous permettra de toujours garder les données dans un bloc contigu de mémoire (il stocke un tableau, d'où le nom). D'autres implémentations de faire d'autres choses.
  • C'est ce que 'array' signifie tout au long de CS. Pas de citation nécessaire. Les nombreuses références dans le JLS> et [JVM Spec]() à la matrice des longueurs ne sont compréhensibles que si les tableaux sont contigus.
  • Ils ne sont sûrement pas stockées en continu de la partie de la mémoire. Objet Java variables sont des pointeurs sur des objets réels (sauf s'ils sont locaux et de les mettre sur la pile par la JVM), de sorte que le tableau de Chaîne est, en fait, un tableau de pointeurs vers des objets de Chaîne qui peut être placé n'importe où dans le tas.
  • veuillez retirer votre mauvaise modifier. Vous n'avez pas de réponse ou la réponse à une question

InformationsquelleAutor euphoria83 | 2009-04-04