How to transform List<String> to Map<String,String> with Google collections?

oshai picture oshai · Feb 15, 2011 · Viewed 58.9k times · Source

I have a list of strings and I have a function to generate a value for each key in the list.

I want to create a map using this function. Can I do this with Google collections?

Answer

dogbane picture dogbane · Feb 15, 2011

Use Maps.uniqueIndex(Iterable, Function) :

Returns an immutable map for which the Map.values() are the given elements in the given order, and each key is the product of invoking a supplied function on its corresponding value.(from javadoc)

Example:

Map<String,String> mappedRoles = Maps.uniqueIndex(yourList, new Function<String,String>() {
  public String apply(String from) {
    // do stuff here
    return result;
  }});