TrongBang:
J'ai 2 listes d'objets cartographiques.
"list1": [
{
"partyId": "1",
"accountId": "1",
"sourceSystem": "1",
},
{
"partyId": "2",
"accountId": "2",
"sourceSystem": "2",
}]
et c'est liste2.
"list2": [
{
"partyId": "3",
"accountId": "3",
"sourceSystem": "3",
},
{
"partyId": "1",
"accountId": "2",
"sourceSystem": "2",
}]
Maintenant, je dois fusionner list1 et list2 d'avoir cette sortie.
"merged": [
{
"partyId": "1",
"accountId": "1",
"sourceSystem": "1",
},
{
"partyId": "2",
"accountId": "2",
"sourceSystem": "2",
},
{
"partyId": "3",
"accountId": "3",
"sourceSystem": "3",
}]
de sorte que vous pouvez le voir se confond 1,2 et 3 de list1 et list2. En outre, puisque liste2 a une partyId = 1 (également en list1), mais les détails (accountid et sourceSystem) sont différents de sorte que le partyId = 1 à list1 est sélectionné.
Comment puis-je faire avec java flux 8? Ou la seule façon est de les convertir en objets java et faire pour boucle.
Ravindra Ranwala:
Vous pouvez le faire comme si d'un seul coup,
List<Map<String, String>> resultMap = Stream.concat(mapListOne.stream(), mapListTwo.stream())
.collect(Collectors.groupingBy(m -> m.get("partyId"), Collectors.toList()))
.entrySet().stream()
.map(e -> e.getValue().get(0))
.collect(Collectors.toList());
Ceci est un deux calcul étape où l' on calcule d' abord List
des cartes pour chaque valeur partyId comme une carte et obtenir le premier élément sur chaque List
pour calculer le résultat final.