2016-03-28 67 views
5

द्वारा समूह के साथ गिनने का कार्यान्वयन मैं लैम्ब्डा अभिव्यक्तियों में गिनती के आधार पर समूह के कार्यान्वयन की तलाश कर रहा हूं और फ़िल्टर कर रहा हूं।जावा 8

select COUNT(employee_id), department_id from employee 
GROUP BY department_id 
HAVING COUNT(employee_id) > 1 

क्या लैम्ब्डा अभिव्यक्तियों का उपयोग करके इसे प्राप्त करने का कोई आसान कार्यान्वयन है।

import static java.util.stream.Collectors.collectingAndThen; 
import static java.util.stream.Collectors.counting; 
import static java.util.stream.Collectors.groupingBy; 

... 

Map<Long, Long> map = 
    employees.stream() 
      .collect(collectingAndThen(groupingBy(Employee::getDeptId, counting()), 
             m -> { m.values().removeIf(v -> v <= 1L); return m; })); 

नोट यहाँ groupingBy द्वारा लौटाए गए नक्शे के अस्थिरता पर कोई गारंटी नहीं है कि, ताकि आप अतिभारित संस्करण का उपयोग और एक ठोस आपूर्ति कर सकते हैं:

उत्तर

6

आप counting() और collectingAndThen साथ, groupingBy कलेक्टर गठजोड़ कर सकते हैं यदि आप चाहते हैं तो परिवर्तनीय उदाहरण।

+0

उत्तर के लिए धन्यवाद – Patan