+1 امتیاز
قبل در برنامه نویسی توسط (1.1هزار امتیاز)

می خواهم همانند دستور IN در SQL، با استفاده از stream های جاوا 8 فقط المان های یک لیست را که در یک لیست دیگر وجود دارند را فیلتر کنم.

1 پاسخ

+1 امتیاز
قبل توسط (1.1هزار امتیاز)

با استفاده از متد filter می توان این کار را کرد:

        List<String> customerNames = Arrays.asList(
                "علی"
                , "احمد"
                , "محسن"
                , "سعید"
                );

        List<Customer> comparedList = result.stream().filter(
                 c -> customerNames.contains(c.getName())).collect(Collectors.toList());
قبل توسط (90 امتیاز)
+1
البته باید دقت داشت متد contains در برخورد با کلاس ها از equals استفاده میکنه که می تونه جواب مناسب نداشته باشه
قبل توسط (1.1هزار امتیاز)
اینجا که لیست از نوع String ولی برای بوجود نیومدن مشکل برای سایر انواع داده حتما باید متدهای hashcode و equals آن کلاس ها override شده باشد.

سوالات مشابه

+1 امتیاز
1 پاسخ 635 بازدید
+1 امتیاز
1 پاسخ 1.1هزار بازدید
+1 امتیاز
1 پاسخ 890 بازدید
0 امتیاز
0 پاسخ 437 بازدید
+2 امتیاز
1 پاسخ 666 بازدید
+1 امتیاز
1 پاسخ 710 بازدید
0 امتیاز
0 پاسخ 419 بازدید
0 امتیاز
1 پاسخ 680 بازدید
...