2012-02-05 12 views
5

Ho difficoltà in questa conversione. Non so se c'è un errore di sintassi o questo non è nemmeno possibile.Conversione da ArrayList a Collection

Ho bisogno di convertire from--

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

To--

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

-? - -> (non capisco quello che viene qui)

In questo modo, ho intenzione di evitare UnsupportedOperationException. Qualsiasi aiuto apprezzato, grazie!

Ehi, grazie a tutti, ho capito! Questo worked--
Soluzione:

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

1) Che cosa ha a che fare questo con GWT? 2) Puoi aggiungere ciò che vuoi fare con 'Collection' e cosa attiva UnsupportedOperationException? – Grilse

+0

Ottiene 'UnsupportedOperationException' quando si chiama remove() sull'elenco? – LanguagesNamedAfterCofee

+0

Non riesco a applicare CONTACT.remove (index); operazione su ArrayList. – Prince

risposta

1

Sto aggiornandolo come una risposta che stavo cercando. Grazie a tutti per le vostre risposte!

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

You don't need to do anything. O c'è qualche operazione particolare che è necessario che lo ArrayList non supporti?

+0

Non posso applicare CONTACT.remove (indice); operazione su ArrayList. – Prince

+1

@Prince Questo perché l'interfaccia Collection non ha un metodo Collection.remove (index), solo un metodo Collection.remove (Object o). Vedi http://docs.oracle.com/javase/6/docs/api/java/util/Collection.html – Yuushi

1

Facendo questo funziona:

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

Così io suggerirei qualcosa di simile:

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

Grazie, ma questo non funziona per me bcoz ho costantemente bisogno di aggiornare il contatto dalla lista dei contatti precedentemente aggiornati e questo sarebbe dammi la lista originale ogni volta. – Prince

4

Non devi fare nulla per eseguire la conversione, questo funziona:

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

Collection è la super-interfaccia di List, se un oggetto im plement List implementerà anche Collection.