J'en suis accro.
Lorsqu'il s'agit de listes en Java, je pense que j'utilise souvent ArrayList comme nouveau.
hoge.java
List<String> list = new ArrayList<>();
Lorsque j'ai demandé à un enseignant de Google quand je voulais réutiliser la ArrayList,
Je pense que deux méthodes sont recommandées. Et je ne mentionne pas la différence entre les deux, et je pense que l'article de Qiita sera un succès, disant "La vitesse d'exécution est différente".
Cependant, en réalité, il existe des différences non seulement de vitesse mais aussi de comportement.
Supposons que vous souhaitiez créer une liste bidimensionnelle en extrayant deux éléments de la liste unidimensionnelle.
L'exemple de code est illustré ci-dessous. Tout d'abord, c'est du cas du neuf.
sample.java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class TestArraylist {
public static void main(String args[]) {
//Liste bidimensionnelle pour la sortie
List<ArrayList<String>> sampleLists = new ArrayList<>();
//Liste temporaire pour ajouter des éléments à sampleLists
ArrayList<String> listA = new ArrayList<>();
//Échantillon approprié
List<String> listB = Arrays.asList("AA", "BB", "CC", "DD", "EE", "FF");
//Créez une liste avec 2 éléments et ajoutez-la à sampleLists
for (int i = 0; i < listB.size(); i++) {
if (i % 2 == 0) {
listA.add(listB.get(i));
continue;
}
sampleLists.add(listA);
listA.add(listB.get(i));
//Confirmation avant nouveau
System.out.println(sampleLists);
//Nouvelle liste temporaire
listA = new ArrayList<>();
//Confirmation après nouveau
System.out.println(sampleLists);
}
}
}
Quand vous faites cela ...
[[AA, BB]]
[[AA, BB]]
[[AA, BB], [CC, DD]]
[[AA, BB], [CC, DD]]
[[AA, BB], [CC, DD], [EE, FF]]
[[AA, BB], [CC, DD], [EE, FF]]
Vous pouvez voir que la liste est exactement ce que vous voulez.
D'un autre côté, supposons que vous utilisiez la méthode clear au lieu de new. La sortie lorsque listA = new ArrayList <> ();
dans l'exemple ci-dessus est réécrit dans le code listA.clear ();
en utilisant la méthode clear est ...
[[AA, BB]]
[[]]
[[CC, DD], [CC, DD]]
[[], []]
[[EE, FF], [EE, FF], [EE, FF]]
[[], [], []]
De cette façon, ** l'élément qui aurait dû être ajouté sera une liste de l'élément 0 à chaque fois que la méthode clear est appelée, et l'élément nouvellement ajouté sera ajouté à toutes les listes jusqu'au prochain appel à la méthode clear. Masu **.
Quand j'essaye de google, il y a beaucoup de pages qui disent laquelle peut être utilisée pour effacer les éléments du tableau, donc je ne fais pas attention, mais en réalité il se comporte différemment comme décrit ci-dessus, alors soyez prudent.
Recommended Posts