«Приведение», то есть обработка списка как чего-то другого типа, не будет работать, если объект, возвращаемый API, также не реализует Map (чего, очевидно, нет). Но вы можете создать карту из содержимого списка.
Furter: список не может содержать <String, Integer>
, так как списки содержат только объекты одного типа. Я полагаю, он содержит такой объект:
public class Element {
public String key;
public Integer value;
}
Для таких вещей очевидное решение таково:
Map<String, Integer> map = new HashMap<String, Integer>(list.size()); // the size of the map will be the size of the list.
for(Element e: list) {
map.put(e.key, e.value);
}
Если ни список, ни его записи не изменятся позже, этого должно быть достаточно. Если что-то может измениться, вы должны реализовать свою собственную карту, которая выполняет перевод списка на лету. В зависимости от того, что меняется, это более или менее сложно, но если все может измениться, то вы можете создать новый класс, который преобразует список в карту:
class ListTranslatorMap extends AbstractMap<String, Integer> {
private List<Element> list;
public ListTranslatorMap(List<Element> list) {
this.list = list;
}
public Set<Map.Entry<String, Integer>> entrySet() {
return new AbstractSet<Map.Entry<String, Integer>>() {
public int size() {
return list.size();
}
public Iterator<Map.Entry<String, Integer>> iterator() {
final Iterator<Element> listIterator = list.iterator();
return new Iterator<Map.Entry<String, Integer>>() {
public boolean hasNext() {
return listIterator.hasNext();
}
public void remove() {
listIterator.remove();
}
public Map.Entry<String, Integer> next() {
final Element element = listIterator.next();
return new Map.Entry<String, Integer>() {
public String getKey() {
return element.key;
}
public Integer getValue() {
return element.value;
}
public Integer setValue(Integer value) {
Integer prev = element.value;
element.value = value;
return prev;
}
};
}
};
}
};
}
}
Но обычно это было бы излишним, и достаточно простого перевода цикла for. Если вам нужно больше способов работы с картами - или если это не карта, а мультикарта с ключом и несколькими записями), взгляните на библиотеки Google Guava , которые имеют удобный индекс функции в com.google.common.collect.Maps .