2017-02-07 2 views
0

E.g. J'ai une liste d'objets, liste A, et son initialisé avec 7 éléments. Chaque élément est ordonné par un champ entier appelé "elementOrder".Comment fusionner de nouveaux éléments dans une liste dans Gosu

Comment puis-je prendre une nouvelle liste des mêmes objets, liste B, et les fusionner dans la liste A basée sur le "elementOrder"?

Notez que la liste B contient des doublons de la liste A et je veux que fusionner des éléments uniques de la liste B dans la liste A.

Merci vous. S

+0

Compris ceci; faites simplement un firstWhere() sur la liste A pour trouver l'élément auquel vous voulez fusionner dans un nouvel élément, puis utilisez l'index de cet élément pour ajouter le nouvel élément. Cela pousse l'élément existant jusqu'à l'indice suivant. – Sas

Répondre

0
//copy ListA element on a new list 
var newList = new ArrayList<ElementType>(ListA) 
//add B elements to new list 
newList.addAll(ListB) 
//order the new list with elementOrder column 
newList = newList.orderBy(\ element -> element.elementOrder) 

Q: Liste B contient des doublons de la liste A et je veux que fusionner des éléments uniques de la liste B dans la liste A

R: vous devez utiliser les blocs (__gVirt_NP_NNS_NNPS<__ expressions lambda) pour filtrer les éléments doublons

//copy ListA element on a new list 
var newList = new ArrayList<ElementType>(ListA) 
//filter B elements not in ListA 
var FiltredListB = ListB.where(\ element -> not ListA.contains(element)) 
//add FiltredListB elements to new list 
newList.addAll(FiltredListB) 
//order the new list with elementOrder column 
newList = newList.orderBy(\ element -> element.elementOrder) 
+0

Bien que ce code puisse répondre à la question, en fournissant [contexte] supplémentaire (https://meta.stackexchange.com/q/114762) en ce qui concerne _how_ et/ou _why_, il résout le problème pour améliorer la valeur à long terme de la réponse. Cela ne fait pas de mal de mentionner pourquoi cette réponse est plus appropriée que d'autres. –

+0

Merci pour votre réponse, mais j'ai raté un point important dans la question, je l'ai édité pour refléter cela. Notez que la liste B contient des doublons de la liste A et je veux seulement fusionner des éléments uniques de la liste B dans la liste A. – Sas