Transform and convert a List to Set with Guava

12,770
Set<To> result = FluentIterable.from(myList)
                               .transform(new Function<From, To>() {
                                   @Override
                                   public To apply(From input) {
                                       return convert(input);
                                   }
                               })
                               .toSet();

This creates an ImmutableSet, which does not accept null. So if you want your Set to contain null, you'll have to use another solution, like the one you're currently using.

Note that, if it's the creation of the temporary collection that bothers you, you shouldn't be bothered. No copy is made. The collection is simply a view over the original list.

Share:
12,770
Omar Hrynkiewicz
Author by

Omar Hrynkiewicz

Updated on July 09, 2022

Comments

  • Omar Hrynkiewicz
    Omar Hrynkiewicz almost 2 years

    Is there a simple way to convert and transform a List to Set with Guava?

    I'd like to use method:

    Set<To> result = Sets.transformToSet(myList, new Function<From, To>() {
                public To apply(From item) {
                    return convert(item);
                }
            });
    

    this is my code, with "tempCollection"

    Collection<To> tempCollection = Collections2.transform(myList, new Function<From, To>() {
                public To apply(From item) {
                    return convert(item);
                }
            });
    Set<To> result = newHashSet(tempCollection );