Java Stream Iterate liste dans une liste et calculer la valeur booléenne

pratham.vishnu

Comment calculer la valeur booléenne dans une liste de liste? Chaque élément d'une liste contient une liste imbriquée. Ci-dessous l'extrait de code

class ChildComponent {
    List<ChildComponent> childComponents = new ArrayList<>();
    Boolean notificationEnabled = Boolean.FALSE;
    String name;

    //respective Gettters/Setters
}

class ModelItem {
    List<ChildComponent> components = new ArrayList<>();
    Boolean alertUser;
}

ModelItemavoir un listdes composants. Chaque composant des composants lista un notificationEnabledindicateur. En outre, chaque composant a une liste de ChildComponent.

alertUserdoit être définitrue dans les cas ci-dessous:

  • si l'un des ChildComponentdans le componentsa notificationEnableddéfini surtrue
  • L'un des éléments de List<ChildComponent> childComponentsest notificationEnableddéfini surtrue

Donc, en gros, si l' un des Componentsa notificationEnabledmis à truealors alertUserdevrait être réglétrue

Comment faire?

modelItem.components.stream().flatMap(a -> a.childComponents.stream())ne fonctionne pas comme il le vérifie. Plus de détails dans l'extrait

Voici l'exemple de code:

public static void main(String[] args) {

    ModelItem modelItem1 = new ModelItem();
    modelItem1.components.add(createC1());
    modelItem1.components.add(createC2());

    updateAlert(modelItem1);
}
        
**// does not work. It only check childComponents**
private static void updateAlert(ModelItem modelItem) {
    boolean anyMatchFilterPromptAtRun = modelItem.components.stream().flatMap(a -> a.childComponents.stream())
            .anyMatch(b -> b.notificationEnabled.equals(Boolean.TRUE));
    modelItem.alertUser = Boolean.valueOf(anyMatchFilterPromptAtRun);
}

private static ChildComponent createC1() {
    ChildComponent c1_1 = new ChildComponent();
    c1_1.name = "c1_1";
    c1_1.notificationEnabled = false;

    ChildComponent c1_2 = new ChildComponent();
    c1_2.name = "c1_2";
    c1_2.notificationEnabled = true;

    // main C2
    ChildComponent c1 = new ChildComponent();
    c1.name = "C1";
    c1.childComponents = Arrays.asList(c1_1, c1_2) ;
    c1.notificationEnabled = false;

    return c1;
}
    
private static ChildComponent createC2() {
    ChildComponent c1_1 = new ChildComponent();
    c1_1.name = "c1_1";
    c1_1.notificationEnabled = false;

    ChildComponent c1_2 = new ChildComponent();
    c1_2.name = "c1_2";
    c1_2.notificationEnabled = true;

    // main C1
    ChildComponent c1 = new ChildComponent();
    c1.name = "C1";
    c1.childComponents = Arrays.asList(c1_1, c1_2) ;
    c1.notificationEnabled = false;

    return c1;
}

Voici l'exemple de structure

{
  "components": [
    {
      "name": "C1",
      "notificationEnabled": false,
      "childComponents": [
        {
          "name": "c1_1",
          "notificationEnabled": false,
          "childComponents": []
        },
        {
          "name": "c1_2",
          "notificationEnabled": true,
          "childComponents": []
        }
      ]
    },
    {
      "name": "C1",
      "notificationEnabled": false,
      "childComponents": [
        {
          "name": "c1_1",
          "notificationEnabled": false,
          "childComponents": []
        },
        {
          "name": "c1_2",
          "notificationEnabled": true,
          "childComponents": []
        }
      ]
    }
  ]
}
MikeFHay

Il semble que vous deviez parcourir de manière récursive une hiérarchie de composants. Vous pouvez faire quelque chose comme ceci:

Stream<ChildComponent> recursiveWalk(List<ChildComponent> list) {
    if (list.isEmpty())
        return Stream.empty();
    }
    
    return Stream.concat(list.stream(),
                         recursiveWalk(list.stream()
                             .map(ChildComponent::childComponents)
                             .flatMap(Collection::stream)
                             .collect(toList())));
}

alertUser = recursiveWalk(components).anyMatch(ChildComponent::notificationEnabled);

Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.

En cas d'infraction, veuillez [email protected] Supprimer.

modifier le
0

laisse moi dire quelques mots

0commentaires
connexionAprès avoir participé à la revue

Articles connexes

Comment vérifier une valeur dans une liste booléenne?

Supprimer la valeur booléenne d'une liste

Comment remplacer la valeur dans les séquences d'une liste booléenne?

Liste vide et valeur booléenne

Java Stream: fusionne la valeur de la liste avec les valeurs de la liste imbriquée dans une liste

Rechercher dans la colonne une liste de mots et créer une colonne booléenne si un mot est trouvé

Comment inverser une valeur booléenne donnée dans une liste?

Comment imprimer les dictionnaires dans une liste qui a une valeur booléenne en Python?

Vérifiez la valeur de toutes les lignes d'une colonne pour voir si elle se trouve dans une liste, renvoie la valeur booléenne, sans boucle for

Comportement étrange de (liste booléenne) et (une autre liste booléenne) en Python

Meilleur moyen de définir la valeur d'une liste booléenne

une question sur la liste booléenne dans la couche personnalisée dans tf.keras

Comment modifier la valeur booléenne d'un élément provenant d'une structure et donc mettre à jour une liste de contrôle ?

Initialiser la liste avec la même valeur booléenne

Comparer et attribuer une valeur dans la liste Python

Linq une liste dans un modal et envoyer la valeur

Comment trier une liste et renvoyer la valeur dans Robotframework

Obtenir la valeur minimale et maximale dans une liste

Essayer de calculer la différence dans une liste à partir de la première valeur de la liste

Indexation booléenne Pandas pour comparer DataFrame et résultats dans la liste des dictées

Comment obtenir la liste des variables qui apparaissent dans une expression booléenne?

Évaluer l'expression booléenne en Java avec des variables stockées dans une liste

Convertir une chaîne en liste et je veux insérer une valeur dans la liste

Calculer la valeur moyenne des tableaux numpy 2D stockés dans une liste

Impossible de mettre à jour une valeur booléenne dans la table par vue et laravel

Trouver une carte dans la liste des cartes java stream

Assigner une liste vide la rend booléenne?

Vérifiez si une valeur d'une liste se trouve dans une autre liste et retournez la valeur

dupliquer l'index dans une liste et calculer la moyenne par index

TOP liste

  1. 1

    Microsoft.WebApplication.targets

  2. 2

    Exporter la table de l'arborescence vers CSV avec mise en forme

  3. 3

    Spring @RequestParam DateTime format comme ISO 8601 Date Heure facultative

  4. 4

    Comment analyser un hachage Ruby plat en un hachage imbriqué?

  5. 5

    Passer la taille d'un tableau 2D à une fonction ?

  6. 6

    Comment créer une nouvelle application dans Dropbox avec des autorisations complètes

  7. 7

    Algorithme: diviser de manière optimale une chaîne en 3 sous-chaînes

  8. 8

    Laravel SQLSTATE [HY000] [1049] Base de données inconnue 'previous_db_name'

  9. 9

    comment supprimer "compte de connexion google" à des fins de développement - actions sur google

  10. 10

    php ajouter et fusionner des données de deux tables

  11. 11

    Créer un système Buzzer à l'aide de python

  12. 12

    Existe-t-il un moyen de voir si mon bot est hors ligne ?

  13. 13

    Comment changer la couleur de la police dans R?

  14. 14

    Déplacement des moindres carrés d'ajustement pour les déplacements de points ayant des problèmes

  15. 15

    impossible d'obtenir l'image d'arrière-plan en plein écran dans reactjs

  16. 16

    Comment vérifier si un utilisateur spécifique a un rôle? Discord js

  17. 17

    comment afficher un bouton au-dessus d'un autre élément ?

  18. 18

    Comment choisir le nombre de fragments et de répliques Elasticsearch

  19. 19

    Comment ajouter une entrée à une table de base de données pour une combinaison de deux tables

  20. 20

    optimiser les opérations du serveur avec elasticsearch: traitement des filigranes de disque bas

  21. 21

    Comment analyser un fichier avec un tableau d'objets JSON en utilisant Node.js?

chaudétiquette

Archive