+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 پاسخ 429 بازدید
+1 امتیاز
1 پاسخ 833 بازدید
+1 امتیاز
1 پاسخ 477 بازدید
0 امتیاز
0 پاسخ 244 بازدید
+2 امتیاز
1 پاسخ 429 بازدید
+1 امتیاز
1 پاسخ 508 بازدید
0 امتیاز
0 پاسخ 261 بازدید
0 امتیاز
1 پاسخ 443 بازدید
...