[JAVA] Trois points pour utiliser ArrayList efficacement

Après tout, la classe d'implémentation de List qui est souvent utilisée est ArrayList. Voici trois points à garder à l'esprit car vous devez l'utiliser efficacement si vous l'utilisez de toutes vos forces.

Idée basique

ArrayList est une classe pour réaliser des tableaux de longueur variable. Il est implémenté en interne à l'aide de tableaux, mais les tableaux réguliers ont une longueur fixe. Donc, comment réaliser une longueur variable consiste à créer un nouveau tableau de plus grande taille et à y copier les données lorsque le tableau initialement préparé est insuffisant. De plus, lors de l'insertion de données au milieu, tous les éléments suivants sont copiés et décalés. À mesure que la taille du tableau augmente, le processus de régénération et de copie d'un tel tableau devient très lent, il est donc important d'empêcher un tel traitement de se produire afin d'utiliser ArrayList efficacement.

3 points

Réglage de la taille initiale

Vous pouvez spécifier la taille initiale dans le constructeur ArrayList. Étant donné que le tableau est généré en premier avec la taille initiale spécifiée, le tableau ne sera pas régénéré jusqu'à ce qu'il dépasse cette taille.

Par exemple, si le nombre d'éléments est de 100 au maximum, une ArrayList sera créée avec une capacité initiale de 100 en procédant comme suit.

List<String> list = new ArrayList<String>(100);

ensureCapacity ensureCapacity est une méthode pour garantir la taille de ArrayList. Il est utilisé lorsque la taille initiale spécifiée dans le constructeur est susceptible d'être largement dépassée. Par exemple, lors de l'ajout de 1000 éléments à une ArrayList initialisée avec une taille initiale de 100, si vous ajoutez 1000 fois normalement, la régénération peut se produire plusieurs fois au milieu, mais avec ensureCapacity, la taille est étendue à 1000 à l'avance. Si vous le faites, vous ne devez le faire qu'une seule fois.

trimToSize trimToSize est une méthode qui réduit la taille de ArrayList par le nombre actuel d'éléments. Par exemple, si une ArrayList initialisée avec une taille initiale de 1000 ne contient que 100 éléments, 900 zones seront gaspillées, vous pouvez donc tronquer cette zone pour la libérer. Bien sûr, la taille sera plus petite, donc si vous essayez d'ajouter un élément après cela, vous devrez réallouer le tableau. Par conséquent, il est recommandé de l'utiliser lorsque l'élément n'est pas ajouté dans le traitement suivant.

Recommended Posts

Trois points pour utiliser ArrayList efficacement
[Java] Comment utiliser List [ArrayList]
[Explication facile à comprendre! ] Comment utiliser ArrayList [Java]
Comment utiliser le contrôle segmenté et les points à noter
Comment utiliser Map
Comment utiliser rbenv
Comment utiliser with_option
Comment utiliser fields_for
Comment utiliser java.util.logging
Comment utiliser la carte
Comment utiliser collection_select
Passons en revue le PATH pour utiliser docker-slim
Comment utiliser Twitter4J
Comment utiliser active_hash! !!
Comment utiliser MapStruct
Comment utiliser TreeSet
[Comment utiliser l'étiquette]
Comment utiliser l'identité
Comment utiliser le hachage
Comment utiliser Dozer.mapper
Comment utiliser Gradle
Comment utiliser org.immutables
Comment utiliser java.util.stream.Collector
Comment utiliser VisualVM
Comment utiliser Map
Comment utiliser l'API Chain
[Java] Comment utiliser Map
Comment utiliser Queue avec priorité
[Rails] Comment utiliser enum
Comment utiliser java Facultatif
Comment utiliser JUnit (débutant)
Comment utiliser le retour Ruby
[Rails] Comment utiliser enum
Comment utiliser @Builder (Lombok)
Comment utiliser la classe Java
Comment utiliser Big Decimal
[Java] Comment utiliser removeAll ()
Comment utiliser String [] args
Comment utiliser la jonction de rails
Comment utiliser Java Map
[java] Raisons d'utiliser statique
Commande Rbenv pour utiliser Ruby
Ruby: Comment utiliser les cookies
Comment utiliser Dependant :: Destroy
Comment utiliser Eclipse Debug_Shell
Comment utiliser Apache POI
[Rails] Comment utiliser la validation
Comment utiliser les variables Java
[Rails] Comment utiliser authenticate_user!
Comment utiliser GC Viewer
[Java] Convertir ArrayList en tableau