2012-02-05 80 views
5

我在轉換時遇到困難。我不知道是否有語法錯誤,或者這是不可能的。從ArrayList轉換爲集合

我需要轉換from--

private static final List<Contact> CONTACTS = Arrays.asList(
     new Contact("text1", "name1"), 
     new Contact("text2", "name2"), 
     new Contact("text3", "name3")); 

中場休息

Collection c = new ArrayList(Arrays.asList(--?--)) 

- ? - - >(我不明白這裏會發生什麼)

通過這樣做,我打算避免UnsupportedOperationException。 任何幫助表示感謝,謝謝!

嘿謝謝大家,我明白了! 這worked--
解決方案:

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

1)這與GWT有什麼關係? 2)你可以添加你想要做的'集合',什麼觸發UnsupportedOperationException? – Grilse 2012-02-05 03:41:42

+0

當你調用列表中的remove()時,你是否得到'UnsupportedOperationException'? – LanguagesNamedAfterCofee 2012-02-05 05:27:39

+0

我無法申請CONTACT.remove(index);對ArrayList進行操作。 – Prince 2012-02-05 05:31:23

回答

1

我正在更新它作爲我正在尋找的答案。謝謝大家的回覆!

List<? extends Contact> col = new ArrayList<Contact>(CONTACTS); 
9
public interface List 
extends Collection 

You don't need to do anything。還是有一些你需要的操作,ArrayList不支持?

+0

我無法申請CONTACT.remove(index);對ArrayList進行操作。 – Prince 2012-02-05 05:32:14

+1

@Prince這是因爲Collection接口沒有Collection.remove(index)方法,只有一個Collection.remove(Object o)方法。見http://docs.oracle.com/javase/6/docs/api/java/util/Collection.html – Yuushi 2012-02-05 10:06:34

1

這樣做的工作:

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

因此我建議是這樣的:

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

謝謝,但這不會對我工作bcoz我一直需要更新以前更新的聯繫人列表中的聯繫人,這將每次給我原始列表。 – Prince 2012-02-05 14:28:06

4

你不必做任何事情來執行轉換,這個工程:

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

CollectionList的超級接口,如果一個對象im它也將執行。