2015-09-16 18 views
20

Tôi đang tìm cách cấu trúc lại cách tôi đã sử dụng luồng trong một số mã của tôi. Ví dụ đầu tiên là cách tôi hiện đang thực hiện nó. Ví dụ thứ hai là những gì im cố gắng để làm cho nó trông giống như.danh sách luồng thành một tập hợp

Set<String> results = new HashSet<String>(); 

someDao.findByType(type) 
      .stream() 
      .forEach(t-> result.add(t.getSomeMethodValue())); 

Có thể trông giống như thế này? Nếu vậy làm thế nào để tôi làm cho nó làm điều đó?

Set<String> results = someDao.findByType(type) 
      .stream() 
      .collect( /* ?? no sure what to put here */); 
+2

Bạn cần để lập bản đồ các yếu tố Suối trước khi thu thập chúng vào Set. 'someDao.findByType (type) .stream(). map (TheClass :: getValue) .collect (toSet());' –

Trả lời

28

Sử dụng Collectors.toSet:

Set<String> results = someDao.findByType(type) 
     .stream() 
     .map(ClassName::getValue) 
     .collect(Collectors.toSet()); 
Các vấn đề liên quan