2013-04-01 4 views
1

Используя Guava, можно ли преобразовать карту в Набор или Список объектов, содержащих ключи и значения Карты? Например. учитывая то, какПреобразование карты в объект с использованием Guava?

class MyEntry { 
    public String key; 
    public String value; 
} 

Map<String,String> theMap = new Map<String,String>(); 

мне не хватает что-то подобное в гуавы/не нашел:

Set<MyEntry> myEntries = Maps.transform(theMap, transformFunction<<Map<String,String>, MyEntry>); 

Очевидно, что это не трудно сделать это вручную, до сих пор мне интересно, если я что-то пропустил и Guava действительно не поддерживает такую ​​вещь?

Спасибо за подсказку!

ответ

4

Ближайшей вещь, которую вы можете сделать с гуавой будет что-то вроде

Collection<MyEntry> myEntries = Collections2.transform(map.entrySet(), function); 

, которая просто нормальная трансформации на entrySet в map и function имеет типа Function<Map.Entry<String, String>, MyEntry>.

Guava не может предоставить Sets.transform по целому ряду причин - он не может гарантировать, что функция является инъективной, она не имеет обратного к функции и т. Д. Если вам нужен Set, то вы вероятно, лучше всего сделать ручную петлю.

+0

Аккуратный «трюк», я был слишком сосредоточен на классе карт и не думал о методе map.entrySet(). Спасибо за этот намек :-) Должно быть даже возможно использовать это с FluentIterable, мой предпочтительный способ :-) –

Смежные вопросы