맵을 Java로 목록으로 변환하는 방법은 무엇입니까?
-
06-07-2019 - |
문제
변환하는 가장 좋은 방법은 무엇입니까? Map<key,value>
a List<value>
? 모든 값을 반복하고 목록에 삽입하거나 내가 무언가를 간과하고 있습니까?
해결책
List<Value> list = new ArrayList<Value>(map.values());
가정 :
Map<Key,Value> map;
다른 팁
여기서 문제는 그 것입니다 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");
키는 a List
새로운 것을 만들어 얻을 수 있습니다 ArrayList
a Set
반환 Map.keySet
방법:
List<String> list = new ArrayList<String>(m.keySet());
값은 a List
새로운 것을 창출 할 수 있습니다 ArrayList
a Collection
반환 Map.values
방법:
List<String> list = new ArrayList<String>(m.values());
얻은 결과 List
키 :
Apple Another Hello
얻은 결과 List
값 :
3.14 Element World
Java 8 스트림 API 사용.
List<Value> values = map.values().stream().collect(Collectors.toList());
map.entrySet()
당신에게 컬렉션을 제공합니다 Map.Entry
키와 값을 모두 포함하는 객체. 그런 다음 이것을 원하는 컬렉션 객체로 변환 할 수 있습니다. new ArrayList(map.entrySet())
;
무엇의 목록?
가정합니다 map
당신의 인스턴스입니다 Map
map.values()
반환합니다Collection
모든 맵의 값을 포함합니다.map.keySet()
반환합니다Set
지도의 모든 키를 포함합니다.
나는 당신이 포함 된 값을 변환하고 싶다고 생각합니다. Map
a list
? 가장 쉬운 것은 전화하는 것입니다 values()
방법의 방법 Map
상호 작용. 이것은 반환합니다 Collection
에 포함 된 가치 객체의 Map
.
이것에 주목하십시오 Collection
뒷받침됩니다 Map
객체와 변경 사항 Map
객체는 여기에 반영됩니다. 따라서 별도의 사본을 원한다면 Map
객체, 단순히 새로운 것을 만듭니다 List
an ArrayList
가치를 전달합니다 Collection
아래.
ArrayList<String> list = new ArrayList<String>(map.values());
이렇게 할 수 있습니다
List<Value> list = new ArrayList<Value>(map.values());
결과의 값을 확인하려면 List<Value>
입력의 키 주문에 있습니다 Map<Key, Value>
, 당신은 "이동"해야합니다 SortedMap
어떻게든.
어느 하나 시작 콘크리트로 SortedMap
구현 (예 : TreeMap
) 또는 입력을 삽입하십시오 Map
a 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.entry를 사용하여 키와 값을 얻을 수 있습니다.
// 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());
}
"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());
} "
지도에서 값을 얻는 일반적인 방법은 다음과 같습니다.
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;
}
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());
}