web-dev-qa-db-fra.com

Comment obtenir la longueur d'une liste de listes en Java?

Si j'ai une donnée List<List<String>> en Java, je peux obtenir la longueur de la première liste via le code:

int lengthData = data.get(0).size();

Mais comment puis-je obtenir le nombre de listes dans la structure sans parcourir la liste des listes pour le savoir?

Peut-être que je suis un peu incertain. J'ai la structure:

List<List<String>> data 

Et je vois que:

int i = data.size();

Sera égal à 1 car il s'agit de la liste racine. Ce que je veux savoir, c'est combien il y a de sous-listes. Traversée de la structure comme ceci:

for (List<String> l : data) {                     
     total ++;                
}

Ne me donne qu'un résultat de 1 que je trouve étrange.

J'ai des données de la forme:

List 1 ==> 1, 2, 3, 4
List 2 ==> 3, 8. 9, 1

Et ainsi de suite où ce sont des sous-listes de la liste racine.

45
Mr Morgan

Juste utiliser

int listCount = data.size();

Cela vous indique combien de listes il y en a (en supposant qu'aucune ne soit nulle). Si vous voulez savoir combien de chaînes il y en a, vous devrez itérer:

int total = 0;
for (List<String> sublist : data) {
    // TODO: Null checking
    total += sublist.size();
}
// total is now the total number of strings
62
Jon Skeet

Java 8

import Java.util.Arrays;
import Java.util.List;
import Java.util.ArrayList;

public class HelloWorld{

     public static void main(String []args){
            List<List<String>> stringListList = new ArrayList<>();
            stringListList.add(Arrays.asList(new String[] {"(0,0)", "(0,1)"} ));
            stringListList.add(Arrays.asList(new String[] {"(1,0)", "(1,1)", "(1,2)"} ));
            stringListList.add(Arrays.asList(new String[] {"(2,0)", "(2,1)"} ));

            int count=stringListList.stream().mapToInt(i -> i.size()).sum();

            System.out.println("stringListList count: "+count);
     }
}
1