2 votes

Comment initialiser la liste de tableaux interne d'une liste de tableaux à deux dimensions ?

La ArrayList ci-dessous est une ArrayList bidimensionnelle de taille pièces. Je divise les StoreIds en parties de ArrayList et je les ajoute à la ArrayList interne de la ArrayList 2D.

ArrayList<ArrayList<String>> partStoreIds = new ArrayList<ArrayList<String>>(parts);    
for(int i = 0; i < parts; i++)
    {
        System.out.println("Executing part: " + i);
        int maxIndex = Math.min(storeIds.size(), querySize*(i+1));
        //The below line is throwing an exception
        partStoreIds.addAll(storeIds.subList(querySize*i, maxIndex));           

    }

2voto

Pavneet_Singh Points 25397

Vous devez créer un nouveau ArraraList puis d'y ajouter des éléments

ArrayList<String> temp=new ArrayList<String>();
temp.addAll(storeIds.subList(querySize*i, maxIndex));
partStoreIds.add(temp);

2voto

Nicolas Filotto Points 32004

Ce que vous essayez d'atteindre peut être fait comme le suivant :

partStoreIds.add(new ArrayList<>(storeIds.subList(querySize*i, maxIndex)));

En effet, comme partStoreIds est un ArrayList de ArrayList seulement ArrayList peuvent être ajoutées et comme storeIds.subList(querySize*i, maxIndex) renvoie un List vous devez d'abord le convertir en tant que ArrayList en utilisant le constructeur new ArrayList(Collection) .

Mais une approche beaucoup plus simple serait de déclarer votre partStoreIds en tant que List de List puis vous pouvez ajouter votre subList directement comme le suivant :

List<List<String>> partStoreIds = new ArrayList<>(parts);
...
    partStoreIds.add(storeIds.subList(querySize*i, maxIndex));

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X