میکروبلاگ

در جاوا ۲ لیست مناسب همروندی (thread safe) وجود دارد. در برنامههای موازی، باید بین Vector و CopyOnWriteArrayList انتخاب کنیم.
CopyOnWrite خواندن سریعی دارد ولی برای هربار نوشتن از کل لیست کپی میگیرد پس زمانی استفاده از آن ایدهآل است که نوشتن کمی داریم و در عوض به خواندن سریع احتیاج داریم.
در طرف مقابل Vector پیاده سازیای مشاابه ArrayList دارد فقط همه متدهای آن سنکرون هستند، پس زمانی از آن استفاده میکنیم که نوشتن زیادی داریم چون در این لیست نوشتن با سرعت بالا انجام میشود.

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

با استفاده از متد اساتیک جدیدی که به لیست در جاوا ۱۰ اضافه شده، میتوانیم از هر کالکشن، یک لیست غیر قابل تغییر (immutable) بسازیم.
برای مثال
List<T> copy = List.copyOf(list);
تنها شرط این است که خود کالکشن و اعضایش null نباشند.

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

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

۳ نوع iterator در جاوا داریم.
اولیش رو که آشنا هستیم، universal iterator هست.
دومی enumeration هست، این یه چیز legacy هست و از اولین jdk بوده و خیلی استفاده نمیشه. با دستور elements() روی Vector و HashTable میتونید دریافتش کنید.
سومی list iterator که برای لیست هست فقط ولی امکانات بیشتری مثل برگشتن به عقب رو هم داره.

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

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

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

هردو کلاس در جاوا، از استریم ورودی میخوانند.
با این تفاوت که اسکنر میتواند تایپهای مختلفی مثل Double هم بخواند ولی BufferedReader محدود به رشته است.
بافردریدر دارای بافر بزرگتری است و در مقایسه با اسکنر سریعتر است. همچنین امکان به اشتراک گذاشتهشدن بین چند نخ پردازشی را هم دارد. (thread safe)

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