+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 پاسخ 559 بازدید
+1 امتیاز
1 پاسخ 994 بازدید
+1 امتیاز
1 پاسخ 761 بازدید
0 امتیاز
0 پاسخ 364 بازدید
+2 امتیاز
1 پاسخ 595 بازدید
+1 امتیاز
1 پاسخ 638 بازدید
0 امتیاز
0 پاسخ 348 بازدید
0 امتیاز
1 پاسخ 595 بازدید
...