2010-03-18 4 views
41

나는 다음과 같이 묻고 싶습니다. Collection을 어떻게 Java로 List로 변환합니까?컬렉션을 목록으로 변환

+4

* 할 말이 있으십니까? 아니면 실제로 * 알고 싶습니까? :) – BalusC

+0

Java에서 일반 Collections를 사용하는 방법에 대해서는 잘 모를 것 같습니다. 튜토리얼을 읽는 것은 어떻습니까? http://java.sun.com/docs/books/tutorial/collections/intro/index.html – mickthompson

+0

여러분의 이야기를 기다리고 있습니다. – Artic

답변

47

List 하위 유형 (예 : ArrayList, LinkedList)의 인스턴스를 이미 만든 경우 addAll 메소드를 사용할 수 있습니다.

예를 들어,

l.addAll(myCollection) 

많은 목록 하위 유형은 또한 생성자에서 소스를들을 수 있습니다.

55
Collection<MyObjectType> myCollection = ...; 
List<MyObjectType> list = new ArrayList<MyObjectType>(myCollection); 

Java tutorialsCollections trail을 참조하십시오.

2

새 목록을 만들고 컬렉션으로 addAll으로 전화하십시오.

0

당신은이 개 솔루션 중 하나를 사용 ..하지만 모두 컬렉션이 동일한 개체가

-3

CollectionList는 인터페이스입니다 참조가 포함됩니다 이후, 당신의 컬렉션을 복제 할 필요가 있는지에 대해 생각할 수 있습니다. ArrayList LinkedList을하고하기 Sandeep가 퍼팅에 대한 ArrayList

public static void main (String args[]) { 
    Collection c = getCollection(); 
    List myList = (ArrayList) c; 
} 

public static Collection getCollection() 
{ 
    Collection c = new ArrayList(); 
    c.add("Apple"); 
    c.add("Oranges"); 
    return c; 
} 
+1

왜 -1입니까? 설명? – Omnipresent

+4

나는 항상 실망하지 않을 것이기 때문에 당신이 다운 받았다고 생각합니다. 물론,'Collection'의 구현 클래스가'List'를 구현할 때 (예를 들어'ArrayList','LinkedList' ...), 여러분은 괜찮습니다. 그러나'Map 과 같은 것을하려고하자마자 myMap = new HashMap (); 목록 fromMap = (List ) myMap.values ​​();'모든 것이 컴파일 시간에 문제가 없지만 실행하면 java.lang.ClassCastException : java.util.HashMap $가 발생합니다. Java에 값을 전송할 수 없습니다. util.List'. –

+1

이것은 단지 개념적으로 완전히 잘못되었습니다. 캐스팅을 통해 임의의 Collection을 List로 강제 설정할 수 없습니다. –

5
List list; 
if (collection instanceof List) 
{ 
    list = (List)collection; 
} 
else 
{ 
    list = new ArrayList(collection); 
} 
1

감사에서 캐스팅 쇼 아래 위로

예에 있기 때문에 단지 Collection로 다시 캐스팅 : 당신은 List 인터페이스의 구현을 취할 수 - NullPointerException을 피하기 위해 null 문을 추가했습니다.

if(collection==null){ 
    return Collections.emptyList(); 
} 
List list; 
if (collection instanceof List){ 
    list = (List)collection; 
}else{ 
    list = new ArrayList(collection); 
} 
관련 문제