13 ответов:
проблема здесь в том, что
Mapимеет два значения (ключ и значение), в то время какListимеет только одно значение (элемент).поэтому лучшее, что можно сделать, это либо получить
Listключей или значений. (Если мы не сделаем обертку, чтобы удержать пару ключ / значение).у нас
Map:Map<String, String> m = new HashMap<String, String>(); m.put("Hello", "World"); m.put("Apple", "3.14"); m.put("Another", "Element");ключи как
Listможно получить, создав новыйArrayListот aSetвозвращеноMap.keySetспособ:List<String> list = new ArrayList<String>(m.keySet());в то время как значения как
Listможно получить создание новогоArrayListСCollectionвозвращеноMap.valuesспособ:List<String> list = new ArrayList<String>(m.values());результат получения
Listключи:Apple Another Helloрезультат получения
Listценностей:3.14 Element World
использование Java 8 Streams API.
List<Value> values = map.values().stream().collect(Collectors.toList());
map.entrySet()дает вам коллекциюMap.Entryобъекты, содержащие как ключ, так и значение. затем вы можете преобразовать его в любой объект коллекции, который вам нравится, напримерnew ArrayList(map.entrySet());
список чего ?
предполагая, что
mapваш экземплярMap
map.values()вернет aCollectionсодержит все значения карты.map.keySet()вернет aSetсодержит все ключи карты.
я думаю, вы хотите преобразовать значения, содержащиеся в
Mapдоlist? Проще всего это назватьvalues()методMapинтерфейс. Это вернетCollectionобъектов значения, содержащихся вMap.обратите внимание, что это
Collectionпри поддержке
если вы хотите обеспечить значения в результирующем
List<Value>находятся в ключевом порядке вводаMap<Key, Value>, вам нужно "пройти"SortedMapкак-то.или start С Б
SortedMapреализация (например,TreeMap) или вставьте свой вводMapнаSortedMapперед преобразованием вList. например:Map<Key,Value> map; List<Value> list = new ArrayList<Value>( new TreeMap<Key Value>( map ));в противном случае вы получите все родное заказ
Mapреализация обеспечивает, что часто может быть что-то кроме естественного порядка ключей (попробуйтеHashtableилиConcurrentHashMap, для разнообразия).
Map<String, Integer> map = new HashMap<String, Integer>(); map.put("java", 20); map.put("C++", 45); Set <Entry<String, Integer>> set = map.entrySet(); List<Entry<String, Integer>> list = new ArrayList<Entry<String, Integer>>(set);мы можем иметь как ключ, так и значение пары в списке.Также можно получить ключ и значение с помощью карты.Запись путем итерации по списку.
"Map<String , String > map = new HapshMap<String , String>; map.add("one","java"); map.add("two" ,"spring"); Set<Entry<String,String>> set = map.entrySet(); List<Entry<String , String>> list = new ArrayList<Entry<String , String>> (set); for(Entry<String , String> entry : list ) { System.out.println(entry.getKey()); System.out.println(entry.getValue()); } "
HashMap<Integer, List<String>> map = new HashMap<>(); List<String> list = new ArrayList<String>(); list.add("Java"); list.add("Primefaces"); list.add("JSF"); map.put(1,list); if(map != null){ return new ArrayList<String>((Collection<? extends String>) map.values()); }
// you can use this List<Value> list = new ArrayList<Value>(map.values()); // or you may use List<Value> list = new ArrayList<Value>(); for (Map.Entry<String, String> entry : map.entrySet()) { list.add(entry.getValue()); }
вот общий метод для получения значений из карты.
public static <T> List<T> ValueListFromMap(HashMap<String, T> map) { List<T> thingList = new ArrayList<>(); for (Map.Entry<String, T> entry : map.entrySet()) { thingList.add(entry.getValue()); } return thingList; }
Comments