将列表强制转换为集合

时间:2010-03-19 11:15:07

标签: java list collections

我有一些pb。我想在java中将List转换为Collection

Collection<T> collection = new Collection<T>(mylList); 

但我有这个错误

  

无法实例化Collection

类型

5 个答案:

答案 0 :(得分:55)

List<T>已经实施了Collection<T> - 您为什么需要创建一个新的?

Collection<T> collection = myList;

错误消息绝对正确 - 您无法直接实例化接口。如果要创建现有列表的副本,可以使用以下内容:

Collection<T> collection = new ArrayList<T>(myList);

答案 1 :(得分:2)

投射永远不需要new

Collection<T> collection = myList;

你甚至没有明确地使用强制转换,因为CollectionList的超类型,所以它会像这样工作。

答案 2 :(得分:1)

有多个解决方案可以将列表转换为集合

解决方案1 ​​

List<Contact> CONTACTS = new ArrayList<String>();
// fill CONTACTS
Collection<Contact> c = CONTACTS;

解决方案2

private static final Collection<String> c = new ArrayList<String>(
                                                Arrays.asList("a", "b", "c"));

解决方案3

private static final Collection<Contact> = new ArrayList<Contact>(
                       Arrays.asList(new Contact("text1", "name1")
                                     new Contact("text2", "name2")));

解决方案4

List<? extends Contact> col = new ArrayList<Contact>(CONTACTS);

答案 3 :(得分:0)

不知道你的代码,回答你的问题有点困难,但根据这里的所有信息,我相信问题是你正在尝试使用Collections.sort传递一个定义为Collection的对象,并且排序没有不支持。

第一个问题。为什么客户定义如此一般?为什么它不是List,Map,Set或更具体的东西?

如果客户端被定义为List,Map或Set,则不会出现此问题,因为您可以直接使用Collections.sort(客户端)。

HTH

答案 4 :(得分:0)

第一个集合是Interface类,您无法实例化。 Collection API

列表Ver APi也是一个接口类。

可能是

List list = Collections.synchronizedList(new ArrayList(...)); 

ver enter link description here

Collection collection= Collections.synchronizedList(new ArrayList(...));