معادل متد contains در جاوا ۸

۲۴ دی ۱۳۹۵

جاوا یک زبان برنامه‌نویسیِ شیءگرا است که برای نخستین بار توسط جیمز گاسلینگ در شرکت سان مایکروسیستمز ایجاد گردید. یکی از قابلیت‌های بنیادین جاوا این است که مدیریت حافظه را بطور خودکار انجام می‌دهد. ضریب اطمینان عملکرد برنامه‌های نوشته‌شده به این زبان نسبت به زبانهای نسل اول C بالا است و وابسته به سیستم‌عامل خاصی نیست. فرض کنید یک List یا Set از چند Object داریم و می‌خواهیم بررسی کنیم که آیا یک Object خاص در این List یا Set وجود دارد یا خیر.



راه‌حل اولیه برای این کار استفاده از متد contains است که آن را به صورت زیر به کار می‌بریم:
objects.contains(someObject);

خروجی این متد true یا false است و در نوع‌های داده‌ای primitive خوب عمل می‌کند  ولی متاسفانه بنا به دلایلی مثل یکسان نبودن ترتیب objectها و... در انواع داده‌ای non-primitive بیشتر اوقات مقدار false برمی‌گرداند.

یکی از راه‌حل‌های پیشنهادی برای حل این مشکل استفاده از Lambda Expressions و stream در جاوا ۸ است. برای این منظور می‌توانیم از قطعه کد زیر استفاده کنیم:
 objects.stream().anyMatch(o -> o.getProperty().equals(someObject.getProperty()));

در کد بالا روی مجموعه/لیست مورد نظر یک Stream ایجاد شده و یک property خاص از آن مجموعه/لیست را با property  آن Object مورد نظر ما مقایسه می‌شود و در صورت حداقل یک بار مساوی بودن این دو مقدار، خروجی کد بالا مقدار true خواهد بود.

هیچ نظری موجود نیست: