답변:
List<Value> list = new ArrayList<Value>(map.values());
가정 :
Map<Key,Value> map;
Collection
에 List
일 것입니다.
keySet()
하고 values()
(기본 구조의 설정 또는 컬렉션보기를 제공 심 오브젝트 일반적으로 keySet()
더 속는을 강조하지로 돌아 세트). 의 경우 values()
반환 된 객체 는 일 수 List
있지만 종종 그렇지 않을 수도 있습니다. 실제 목록을 만들면 링크가 끊어 지므로 더 이상 원래지도에 의존하지 않습니다. 그러나 일부 API에는 하나만 필요하기 때문에 List 만 있으면됩니다. 좋은 API는 얻을 수있는 가장 추상적 인 인터페이스 만 필요하다는 규칙을 강화합니다.
여기서 문제 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
Set
Map.keySet
List<String> list = new ArrayList<String>(m.keySet());
메소드 로 리턴 된 값 List
에서 새 값을 작성하면 다음 과 같은 값을 얻을 수 있습니다 .ArrayList
Collection
Map.values
List<String> list = new ArrayList<String>(m.values());
List
of 키 를 얻은 결과 :
사과 다른 여보세요
List
값 을 얻은 결과 :
3.14 요소 세계
HashMap
유사한 분류되지 않은 Map
구현에 대해서는 사실상 무작위입니다.
Java 8 Streams API 사용
List<Value> values = map.values().stream().collect(Collectors.toList());
에 포함 된 값 Map
을 list
? 가장 쉬운 values()
방법은 Map
인터페이스 의 메소드 를 호출하는 것입니다 . 이것은에 Collection
포함 된 값 객체를 반환합니다 .Map
.
이것은 객체에 Collection
의해 뒷받침되며 Map
객체에 대한 모든 변경 사항 Map
은 여기에 반영됩니다. 따라서 Map
객체에 바인딩되지 않은 별도의 사본을 원하면 아래 List
처럼 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
에 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());
} "