Каков наилучший способ конвертировать Map<key,value>
в List<value>
? Просто переберите все значения и вставьте их в список или я что-то пропускаю?
java
list
collections
map
Javaa
источник
источник
Ответы:
при условии:
источник
Collection
кList
будет работать.keySet()
и,values()
как правило, являются объектами-оболочками, которые дают представление Set или Collection базовой структуры (keySet()
возвращает Set, чтобы подчеркнуть отсутствие дубликатов). Ибоvalues()
возвращаемый объект может бытьList
, но часто не будет. Создание настоящего Списка, как вы говорите, нарушает ссылку, что означает, что вы больше не зависите от исходной Карты. Иногда, однако, вам нужен только List, потому что некоторые API требуют одного - усиливая правило, что хороший API должен требовать только самых абстрактных интерфейсов, сПроблема здесь в том, что у
Map
него есть два значения (ключ и значение), в то время как aList
имеет только одно значение (элемент).Поэтому лучшее, что можно сделать, - это получить
List
ключи или значения. (Если только мы не создадим оболочку для пары ключ / значение).Скажем, у нас есть
Map
:Ключи
List
можно получить, создав новыйArrayList
изSet
возвращенногоMap.keySet
методом:Тогда как значения
List
можно получить, создав новыйArrayList
изCollection
возвращенногоMap.values
методом:Результат получения
List
ключей:Результат получения
List
значений:источник
HashMap
аналогичных несортированныхMap
реализаций он будет фактически случайным.Использование Java 8 Streams API.
источник
map.entrySet()
дает вам коллекциюMap.Entry
объектов, содержащих как ключ, так и значение. затем вы можете преобразовать это в любой объект коллекции, который вам нравится, напримерnew ArrayList(map.entrySet())
;источник
список чего?
Предположим,
map
это ваш примерMap
map.values()
вернетCollection
содержащий все значения карты.map.keySet()
вернетSet
содержащий все ключи карты.источник
Я предполагаю , что вы хотите , чтобы преобразовать значения , содержащиеся в
Map
кlist
? Проще всего вызватьvalues()
методMap
интерфейса. Это вернетCollection
объекты значения, содержащиеся вMap
.Обратите внимание, что это
Collection
поддерживаетсяMap
объектом, и любые изменения вMap
объекте будут отражены здесь. Поэтому, если вы хотите, чтобы отдельная копия не была привязана к вашемуMap
объекту, просто создайте новыйList
объект, например,ArrayList
передав значение,Collection
как показано ниже.источник
Вы можете сделать это так
источник
Если вы хотите убедиться, что значения в результате
List<Value>
находятся в порядке клавиш вводаMap<Key, Value>
, вам нужно «пройти через»SortedMap
.Либо начните с конкретной
SortedMap
реализации (например,TreeMap
), либо вставьте свой входMap
в,SortedMap
прежде чем преобразовать его вList
. например:В противном случае вы получите то, что
Map
обеспечивает реализация в собственном порядке , что часто может быть чем-то отличным от упорядочения естественного ключа (TryHashtable
илиConcurrentHashMap
, для разнообразия).источник
у нас может быть пара ключей и значений в списке. Также можно получить ключ и значение, используя Map.Entry, перебирая список.
источник
источник
источник
Вот общий метод для получения значений из карты.
источник
источник