2015-06-23 35 views
6

Tôi đang cố gắng sử dụng java 8 để trả về danh sách các giá trị khóa (Số nguyên) trong đó giá trị (Checkbox) là đã kiểm tra. Bản đồ tôi đang cố gắng xử lý có dạng sau.Java 8 - danh sách trả về (keyset) trái ngược với Danh sách <Map.Entry <Integer, CheckBox >>

Map<Integer, CheckBox> 

Mục đích là trả về bộ khóa cho tất cả các giá trị mà giá trị hộp kiểm được chọn.

Nếu tôi làm như sau

checkBoxes.entrySet().stream().filter(c -> c.getValue().getValue()) 
       .collect(Collectors.toList()); 

sau đó tôi lấy lại một List<Map.Entry<Integer, CheckBox>> Liệu có cách nào để làm điều này tất cả trong một dòng mà không cần chế biến các giá trị Map.Entry vì vậy tôi chỉ có thể nhận được một danh sách các số nguyên?

Cảm ơn

Trả lời

8

Bạn có thể thêm một cuộc gọi map để trích xuất các chính từ Entry:

List<Integer> keys = checkBoxes.entrySet().stream() 
      .filter(c -> c.getValue().getValue()) 
      .map(Map.Entry::getKey) 
      .collect(Collectors.toList()); 
+0

Perfect - cảm ơn bạn rất nhiều. Có vẻ như tôi cần phải đi và tìm hiểu điều này một số chi tiết như tôi đã không biết rằng có thể được thực hiện. Cảm ơn bạn – Biscuit128

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