2012-02-05 34 views
5

Tôi gặp khó khăn trong việc chuyển đổi này. Tôi không biết nếu có một lỗi cú pháp hoặc điều này thậm chí không thể.Chuyển đổi từ ArrayList sang Bộ sưu tập

tôi cần phải chuyển đổi from--

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

đối với:

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

- - -> (Tôi không hiểu điều gì sẽ đến ở đây)

Bằng cách này, tôi có ý định tránh UnsupportedOperationException. Bất kỳ trợ giúp nào được đánh giá cao, cảm ơn!

Xin cảm ơn tất cả, tôi hiểu rồi! này worked--
Giải pháp:

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

1) Điều này có liên quan gì với GWT? 2) Bạn có thể thêm những gì bạn muốn làm với 'Bộ sưu tập', và điều gì kích hoạt UnsupportedOperationException? – Grilse

+0

Bạn có nhận được 'UnsupportedOperationException' khi gọi remove() trên Danh sách không? – LanguagesNamedAfterCofee

+0

Tôi không thể áp dụng CONTACT.remove (index); hoạt động trên ArrayList. – Prince

Trả lời

1

Tôi đang cập nhật nó làm câu trả lời tôi đang tìm kiếm. Cảm ơn tất cả các hồi đáp của bạn!

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

You don't need to do anything. Hoặc có một số hoạt động cụ thể mà bạn cần rằng ArrayList không hỗ trợ?

+0

Tôi không thể áp dụng CONTACT.remove (chỉ mục); hoạt động trên ArrayList. – Prince

+1

@Prince Đó là vì giao diện Collection không có phương thức Collection.remove (index), chỉ có phương thức Collection.remove (Object o). Xem http://docs.oracle.com/javase/6/docs/api/java/util/Collection.html – Yuushi

1

Làm việc này:

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

Vì vậy, tôi muốn đề nghị một cái gì đó như:

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

Cảm ơn nhưng điều này sẽ không hiệu quả đối với tôi bcoz tôi luôn cần phải cập nhật liên hệ từ danh sách liên hệ được cập nhật trước đó và điều này sẽ cho tôi danh sách ban đầu mọi lúc. – Prince

4

Bạn không cần phải làm gì để thực hiện chuyển đổi đó, công trình này:

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

Collection là giao diện siêu của List, nếu một đối tượng im plements List nó cũng sẽ thực hiện Collection.

Các vấn đề liên quan