میکروبلاگ

تفاوت لیست‌های مناسب هم‌روندی

در جاوا ۲ لیست مناسب هم‌روندی (thread safe) وجود دارد. در برنامه‌های موازی، باید بین Vector و CopyOnWriteArrayList انتخاب کنیم.

CopyOnWrite خواندن سریعی دارد ولی برای هربار نوشتن از کل لیست کپی می‌گیرد پس زمانی استفاده از آن ایده‌آل است که نوشتن کمی داریم و در عوض به خواندن سریع احتیاج داریم.

در طرف مقابل Vector پیاده سازی‌ای مشاابه ArrayList دارد فقط همه متد‌های آن سنکرون هستند، پس زمانی از آن استفاده می‌کنیم که نوشتن زیادی داریم چون در این لیست نوشتن با سرعت بالا انجام می‌شود.

تبدیل enum به عدد

در زبان سی، تبدیل نوع داده enum به عدد، به سادگی یک cast کردن انجام می‌شود اما در جاوا همه چیز محافظت شده‌است. 

برای تبدیل باید از پیش به هر یکی از داده‌ها یک عدد نسبت دهیم و یک سازنده و یک getter نیز تعیین کنیم.

 

مطالعه بیشتر

متد copyOf در لیست جاوا ۱۰

با استفاده از متد اساتیک جدیدی که به لیست در جاوا ۱۰ اضافه شده، می‌توانیم از هر کالکشن، یک لیست غیر قابل تغییر (immutable) بسازیم.

برای مثال

List<T> copy = List.copyOf(list);

تنها شرط این است که خود کالکشن و اعضایش null نباشند.

بیشتر بخوانید

کلاس InSummaryStatistics

کلاس IntSummaryStatistics در جاوا
به طور خلاصه از یه مجموعه داده‌ی int، چهار پنج تا ویژگی رو نگه می‌داره و می‌تونید از اونا استفاده کنید.
عمدتا intStream رو به این تبدیل می‌کنند توی مواقعی که چند تا ترمینال ازش رو احتیاج داشته باشن.
مثلا هم count هم sum هم average

اطلاعات بیشتر

تمرین کد زدن در codewars

کد وارز یه سایته که توش به زبون های محتلف تمرین کدنویسی می‌کنید.
ورودی خروجی نمونه می‌ده و صورت سوال رو شفاف بیان می‌کنه.
آخر هم کد رو کامل تست می‌کنه تا از صحت برنامه مطمین بشه.
اخرشم که حل کردین سولوشن های best practice و clever  بقیه رو به شما نشون می‌ده.
codewars.com

انواع پیشمایشگر

۳ نوع iterator در جاوا داریم.
اولیش رو که آشنا هستیم، universal iterator هست.

دومی enumeration هست، این یه چیز legacy هست و از اولین jdk بوده و خیلی استفاده نمی‌شه. با دستور elements() روی Vector و HashTable می‌تونید دریافتش کنید.

سومی list iterator که برای لیست هست فقط ولی امکانات بیشتری مثل برگشتن به عقب رو هم داره.

تبدیل جویبار به رشته

یکی از عملیات‌های پایانی برای جویبار‌ها، collect است، برای تبدیل جویبار به انواع Collection ها متد وجود دارد، برای تبدیل یک جویبار به رشته هم می‌توانیم از Collectors.joining استفاده کنیم.

مطالعه بیش‌تر

 

 

 

متد intern در String

متد intern روی String مطمئن می‌شود که رشته‌هایی با محتوای مشابه، در یک خانه حافظه مشترک نگه‌داشته شوند (حتی اگر با سازنده‌ new شده باشند).

این متد برای زمانی مناسب است که تعداد زیادی از یک رشته واحد دارید و می‌خواهیم در حافظه صرفه‌جویی کنیم.

مطالعه بیش‌تر

مشکل اولین nextLine

در هنگام استفاده از اسکنر، وقتی برای اولین بار بعد از تعدادی next از nextLine استفاده می‌کنیم، رشته‌ی خالی بر می‌گردد. این مشکل برای این است که کرسر انتهای خط قبل قرار دارد. برای این مشکل کافیست یک nextLine بدون استفاده از نتیجه انجام دهیم.

مطالعه بیش‌تر

Scanner vs BufferedReader

هردو کلاس در جاوا، از استریم ورودی می‌خوانند.

با این تفاوت که اسکنر می‌تواند تایپ‌های مختلفی مثل Double هم بخواند ولی BufferedReader محدود به رشته است.

بافردریدر دارای بافر بزرگ‌تری است و در مقایسه با اسکنر سریع‌تر است. همچنین امکان به اشتراک‌ گذاشته‌شدن بین چند نخ پردازشی را هم دارد. (thread safe)

مطالعه بیش‌تر

تست stdout در junit

برای تست خروجی برنامه مورد تست در junit که در خروجی استاندارد چاپ می‌شود می‌توان از setOut استفاده کرد و خروجی برنامه را به یک printStream منتقل کرد. سپس خروجی toString آن پرینت‌استریم را با متدهای junit، بررسی کرد.

مطالعه بیشتر

مشاهده میکروبلاگ‌های بیشتر:

آرشیو ۱

دکمه بازگشت به بالا