2015-10-21 13 views
6

Tôi có một bộ sưu tập với hai loại đối tượng. Tôi chỉ muốn đọc một trong hai loại này thành một Bộ mới. Có cách nào thanh lịch để thực hiện việc này không?Cách chỉ đọc các đối tượng cụ thể của một loại từ bộ sưu tập có nhiều loại đối tượng

+0

bạn có thể bọc đồ đó vào một bản đồ 'Bản đồ > 'và tách các đối tượng của lớp actuall theyr. – SomeJavaGuy

+0

Bạn có thể sử dụng lớp org.apache.commons.collections4.Predicate để xử lý theo cách thanh lịch. –

Trả lời

5

Sử dụng Google ổi của.

Collections2.filter(yourOriginalCollection, new Predicate<Object>() { 
    public boolean apply(Object obj) { 
     return obj instanceof TypeYouAreInterestedIn; 
    } 
}); 

Hoặc trong Java 8:

Collections2.filter(yourOriginalCollection, (obj) -> obj instanceof TypeYouAreInterestedIn); 
+0

@ M156 cảm ơn bộ lọc Java 8 –

+1

Không có vấn đề gì, tôi nghĩ rằng những biểu thức lambda này là một tính năng tuyệt vời mà cuối cùng đã đến Java 8, vì vậy chúng ta phải truyền bá từ: D – M156

1

Giống như Suresh nói có là không được xây dựng trong chức năng, ở đây một số loại mã hoàn chỉnh: bộ lọc

for(Object obj : yourOldCollection) { 
    if(obj instanceof SearchedType){ 
     yourNewSet.add(obj); 
    } 
} 
Các vấn đề liên quan