+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 پاسخ 426 بازدید
+1 امتیاز
1 پاسخ 830 بازدید
+1 امتیاز
1 پاسخ 470 بازدید
0 امتیاز
0 پاسخ 242 بازدید
+2 امتیاز
1 پاسخ 426 بازدید
+1 امتیاز
1 پاسخ 506 بازدید
0 امتیاز
0 پاسخ 258 بازدید
0 امتیاز
1 پاسخ 438 بازدید
...