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

وقتی مجموعه (Set) جاوا رو برای حذف برخی از اعضا به صورت تک تک می خوام بررسی کنم و از foreach استفاده می کنم با خطای دسترسی همزمان مواجه می شم که به دلیل  همروند بودن عملیات foreach هست.

آیا راه دیگه ای به غیر از پیمایش iterator مجموعه برای این کار وجود داره؟

اگه چنین راهی هست کدوم روش بهینه تره؟

1 پاسخ

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

برای حذف عناصر یک لیست بصورت درجا (in place) تنها راه، استفاده از Iterator است ولی اگه نخواهید بصورت درجا انجام شود و پس از حذف یک لیست جدید برای شما ساخته شود می توانید از stream ها در جاوا 8 استفاده کنید.

برای مثال در کد زیر تمام غذاهایی برای گیاه خوارها مناسب نیستند حذف کرده و یک لیست جدید که فقط برای Vegetarian ها مناسب است را بر میگرداند.

        List<Dish> vegetarianMenu = menu.stream().filter(
                d -> d.isVegetarian()).collect(toList());

سوالات مشابه

+1 امتیاز
2 پاسخ 616 بازدید
0 امتیاز
1 پاسخ 411 بازدید
سوال شده 6 سال قبل در برنامه نویسی توسط Saeed Zarinfam (1.1هزار امتیاز)
+1 امتیاز
1 پاسخ 1.6هزار بازدید
0 امتیاز
1 پاسخ 466 بازدید
+2 امتیاز
1 پاسخ 670 بازدید
+1 امتیاز
2 پاسخ 614 بازدید
+2 امتیاز
1 پاسخ 424 بازدید
+1 امتیاز
1 پاسخ 306 بازدید
+1 امتیاز
1 پاسخ 1.3هزار بازدید
...