+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 پاسخ 560 بازدید
+1 امتیاز
1 پاسخ 995 بازدید
+1 امتیاز
1 پاسخ 762 بازدید
0 امتیاز
0 پاسخ 365 بازدید
+2 امتیاز
1 پاسخ 595 بازدید
+1 امتیاز
1 پاسخ 639 بازدید
0 امتیاز
0 پاسخ 350 بازدید
0 امتیاز
1 پاسخ 597 بازدید
...