2
votes

Les valeurs de la carte sont dans le tableau. Toutes les valeurs doivent être converties en liste et tout combiner en une liste de résultats

J'ai une carte avec un tableau comme valeurs. Maintenant, tout ce tableau doit être converti en liste. enfin, toute la liste doit être combinée en une seule liste.

Disponible maintenant,

List<Class1> result  = new ArrayList<>();
//This above list to be as {c1, c2, c3, c4}

Maintenant, j'aime avoir le résultat comme suit.

XXX

Attendez-vous au code en java8


1 commentaires

Vous n'êtes pas vraiment sûr mais cherchiez-vous simplement Arrays.asList (classArray) ?


4 Réponses :


1
votes

Vous pouvez parcourir la carte en utilisant le jeu d'entrées et pour chaque valeur (c.-à-d. tableau), vous pouvez utiliser Arrays.asList pour la convertir en liste et l'ajouter dans votre liste finale.

    Map<String , Integer[]> hm = new HashMap<String,Integer[]>();

    List<Integer> finalList = hm.values().parallelStream().flatMap(Arrays::stream).collect(Collectors.toList())

avec l'utilisation de flux parallèles, cela peut être fait comme ceci

    Map<String , Integer[]> hm = new HashMap<String,Integer[]>();
    List<Integer> finalList = new ArrayList<Integer>();
    for(Entry<String, Integer[]> entry:hm.entrySet()) {
        finalList.addAll(Arrays.asList(entry.getValue()));
    }

Ceci est un exemple simple avec un tableau d'entiers. Vous pouvez vous référer à ceci et arriver à votre solution.


0 commentaires

3
votes

Vous devez aplatir vos tableaux internes dans le flux d'entrées:

List<Class1> result = master_map.values()
    .stream()
    .flatMap(Arrays::stream) //use flatMap to flatten nested stream
    .collect(Collectors.toList());


0 commentaires

0
votes

Et une autre variante simple de Java 8:

List<Class1> result  = new ArrayList<>();
master_map.entrySet().stream().forEach(element -> {
  result.addAll(Arrays.asList(element.getValue()));
    });


0 commentaires

0
votes

Un autre exemple

    List<Class1> x = new ArrayList<>();
    master_map.forEach((k,v) -> x.addAll(Arrays.asList(v)));


1 commentaires

vous devez avoir réalisé que vous n'avez vraiment pas besoin des clés k là-bas, alors peut-être qu'une simple itération sur les valeurs permettrait de nettoyer cela?