Transformer et convertir une Liste pour Définir avec Goyave
Est-il un moyen simple de convertir et transformer une Liste pour Définir avec Goyave?
Je voudrais utiliser la méthode:
Set<To> result = Sets.transformToSet(myList, new Function<From, To>() {
public To apply(From item) {
return convert(item);
}
});
c'est mon code, avec "tempCollection"
Collection<To> tempCollection = Collections2.transform(myList, new Function<From, To>() {
public To apply(From item) {
return convert(item);
}
});
Set<To> result = newHashSet(tempCollection );
Il n'y a pas quelque chose comme cela parce que A) il existe différents types de jeux avec des comportements différents (par exemple,
HashSet
vs TreeSet
) et vous devez choisir celle que vous souhaitez utiliser, et B) la transform
méthodes sont paresseux et vue sur la Set
ne peut pas être à la vue d'une collection arbitraire, sans avoir O(n) size
et contains
méthodes.OriginalL'auteur Omar Hrynkiewicz | 2013-11-19
Vous devez vous connecter pour publier un commentaire.
Cela crée une ImmutableSet, qui n'accepte pas la valeur null. Donc, si vous voulez que votre Défini pour contenir la valeur null, vous devrez utiliser une autre solution, comme celui que vous utilisez actuellement.
Noter que, si c'est de la création de la temporaire de la collection qui vous dérange, vous ne devriez pas être dérangé. Aucune copie n'est effectuée. La collection est tout simplement une vue de dessus de la liste d'origine.
filter(Predicates.notNull())
après la transformation()Sauf si vous voulez pour avoir la valeur null dans le retour de l'Ensemble. Je vais préciser ma réponse.
Si vous ne voulez pas un
ImmutableSet
, au lieu detoSet()
vous pourriez fairecopyInto(new HashSet<To>())
, entre autres choses.OriginalL'auteur JB Nizet