bonjour à tous,
je voudrais créer une fonction qui découpe une collection en en plusieurs sous collection de taille fixe, du style :
pour l'instant si je n'utilise que des List ça fonctionne impec avec ça :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 List<String> list = new ArrayList<String>(); //opérations sur la listes (add, ...) List<List<String> listeDecoupee= decoupage(list, 5); //parcours pour afficher tous les elements for(List<String> subList : list) { for(String str : subList) sysout(str) }
j'aimerais donc généraliser ça pour tout type de collection genre
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 public static <T> List<List<T>> splitIntoChunks(List<T> list, int chunkSize) { if (chunkSize <= 0) throw new IllegalArgumentException("chunkSize must be greater than 0."); List<List<T>> retVal = new ArrayList<List<T>>(); int index = 0; while (index < list.size()) { int count = list.size() - index > chunkSize ? chunkSize : list.size() - index; retVal.add(list.subList(index, index+count)); index += chunkSize; } return retVal; }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Set<UUID> set = new HashSet<UUID>(); //opérations quelconques ( ...) Set<Set<UUID> decoupee= decoupage(set, 20);
Partager