2010-12-01 2 views

답변

33

대부분의 컬렉션은 생성자 인수로 Collection 동의를 만들 때 전달할 수 :

List<String> keyList = new ArrayList<String>(map.keySet()); 
List<String> valueList = new ArrayList<String>(map.values()); 
+0

아, 말이 . 시원한! –

+0

LinkedHashMap과 List에는 모두 순서가 있으므로 원하는 결과가 List와 Map의 순서가 같을 것으로 기대합니다. 그러나 Set을 중간 형식 (map.keySet()의 반환 값)으로 사용합니다.이 형식에는 순서가 없습니다. 따라서 keyList가 map과 동일한 순서를 가짐을 보증하지는 않습니다 (map.values ​​()는 Set이 아닌 Collection을 반환하므로 문제가되지 않습니다) [values ​​() '문서를 오해 한 것을 근거로했기 때문에] – Jasper

+2

map.keySet()에 대해 궁금해서 코드를 체크 아웃했습니다.이 경우 LinkedHashMap의 경우 LinkedHashMap $ LinkedKeySet이 반환됩니다.이 링크에는 예측 가능한 순서 (소스 LinkedHashMap)가 있습니다. map.values ​​()와 비슷하다. 위의 코드는 예상대로 작동 할 것이고, keyList [n] ==> valueList [n] 인 두 개의리스트로 끝날 것이다. – Luke