[java] Java에서 맵을 List로 변환하는 방법?

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");

메소드 로 리턴 된 키를 List새로 작성하여 키를 얻을 수 있습니다 .ArrayListSetMap.keySet

List<String> list = new ArrayList<String>(m.keySet());

메소드 로 리턴 된 값 List에서 새 값을 작성하면 다음 과 같은 값을 얻을 수 있습니다 .ArrayListCollectionMap.values

List<String> list = new ArrayList<String>(m.values());

Listof 키 를 얻은 결과 :

사과
다른
여보세요

List값 을 얻은 결과 :

3.14
요소
세계


답변

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() 를 반환합니다 Collection모든지도 값을 포함 합니다.
  • map.keySet()Set지도의 모든 키 가 포함 된를 반환 합니다.

답변

에 포함 된 값 Maplist? 가장 쉬운 values()방법은 Map인터페이스 의 메소드 를 호출하는 것입니다 . 이것은에 Collection포함 된 값 객체를 반환합니다 .Map .

이것은 객체에 Collection의해 뒷받침되며 Map객체에 대한 모든 변경 사항 Map은 여기에 반영됩니다. 따라서 Map객체에 바인딩되지 않은 별도의 사본을 원하면 아래 List처럼 ArrayListCollection을 전달하는 것과 같이 새 객체 를 만들면 됩니다.

ArrayList<String> list = new ArrayList<String>(map.values());


답변

당신은 이렇게 할 수 있습니다

List<Value> list = new ArrayList<Value>(map.values());