💠 کلاس های تو در تو در جاوا
🕗زمان مطالعه: 1:30 دقیقه
🔆 یکی از ویژگی های زبان جاوا، تعریف کلاس ها بصورت تو در تو میباشد. در واقع این قابلیت به شما اجازه میدهد که کلاس های مرتبط به هم را دسته بندی کنید. یا به عبارتی کلاس هایی که فقط در کنار هم استفاده میشوند و استفاده خارجی ندارند (مثلا تعریف کلاس Node داخل کلاس LinkedList). این کار در واقع علاوه بر افزایش کارآمدی کد، به خوانایی کد نیز کمک میکند.
🔅 مزایای استفاده از کلاس های تو در تو:
- کلاس داخلی به اعضای کلاس خارجی نیز دسترسی دارد.
- کلاس داخلی میتواند پرایوت یا حتی استاتیک تعریف شود
- کلاس داخلی خود به گونه ای عضوی از کلاس خارجی است. پس بدون ایجاد نمونه از کلاس خارجی، نمیتوان به آن دست پیدا کرد:
class OuterClass
{
...
class NestedClass
{
...
}
}
🟡 برای نمونه سازی از کلاس داخلی، کافیست اول از کلاس خارجی نمونه ای ایجاد کنید:
OuterClass outer = new OuterClass();
و حالا از طریق نمونه outer اقدام به ایجاد نمونه از کلاس داخلی کنید:
OuterClass.InnerClass inner = o. new InnerClass();
همانطور که پیش تر اشاره کردیم، کلاس داخلی کاملا به کلاس خارجی متصل است. پس بدون ایجاد از نمونه خارجی نمیتوانید از کلاس داخلی هم نمونه ای ایجاد کنید.
🟡 اما درصورتی که کلاس داخلی استاتیک باشد، بدون اینکه نیاز به ساختن نمونه از کلاس خارجی باشد، میتوانید از کلاس داخلی نمونه خود را ایجاد کنید:
OuterClass.InnerClass staticInner = new OuterClass.InnerClass();
🔺 ضمنا کلاس استاتیک به راحتی به اعضای استاتیک کلاس خارجی دسترسی دارد اما برای دسترسی به باقی اعضا، حتما باید از کلاس خارجی در این کلاس یک نمونه ایجاد کنید.
🔰 مثال از کلاس های تو در تو:
class Car{
class Engine{
}
}
——-——
class LinkedList{
class Node{
}
}
———
#innerClasses #staticClasses #Class #nested #nestedClasses
〽️ @PieceJava
🕗زمان مطالعه: 1:30 دقیقه
🔆 یکی از ویژگی های زبان جاوا، تعریف کلاس ها بصورت تو در تو میباشد. در واقع این قابلیت به شما اجازه میدهد که کلاس های مرتبط به هم را دسته بندی کنید. یا به عبارتی کلاس هایی که فقط در کنار هم استفاده میشوند و استفاده خارجی ندارند (مثلا تعریف کلاس Node داخل کلاس LinkedList). این کار در واقع علاوه بر افزایش کارآمدی کد، به خوانایی کد نیز کمک میکند.
🔅 مزایای استفاده از کلاس های تو در تو:
- کلاس داخلی به اعضای کلاس خارجی نیز دسترسی دارد.
- کلاس داخلی میتواند پرایوت یا حتی استاتیک تعریف شود
- کلاس داخلی خود به گونه ای عضوی از کلاس خارجی است. پس بدون ایجاد نمونه از کلاس خارجی، نمیتوان به آن دست پیدا کرد:
class OuterClass
{
...
class NestedClass
{
...
}
}
🟡 برای نمونه سازی از کلاس داخلی، کافیست اول از کلاس خارجی نمونه ای ایجاد کنید:
OuterClass outer = new OuterClass();
و حالا از طریق نمونه outer اقدام به ایجاد نمونه از کلاس داخلی کنید:
OuterClass.InnerClass inner = o. new InnerClass();
همانطور که پیش تر اشاره کردیم، کلاس داخلی کاملا به کلاس خارجی متصل است. پس بدون ایجاد از نمونه خارجی نمیتوانید از کلاس داخلی هم نمونه ای ایجاد کنید.
🟡 اما درصورتی که کلاس داخلی استاتیک باشد، بدون اینکه نیاز به ساختن نمونه از کلاس خارجی باشد، میتوانید از کلاس داخلی نمونه خود را ایجاد کنید:
OuterClass.InnerClass staticInner = new OuterClass.InnerClass();
🔺 ضمنا کلاس استاتیک به راحتی به اعضای استاتیک کلاس خارجی دسترسی دارد اما برای دسترسی به باقی اعضا، حتما باید از کلاس خارجی در این کلاس یک نمونه ایجاد کنید.
🔰 مثال از کلاس های تو در تو:
class Car{
class Engine{
}
}
——-——
class LinkedList{
class Node{
}
}
———
#innerClasses #staticClasses #Class #nested #nestedClasses
〽️ @PieceJava
👍7❤1
تیکه پاره های جاوا
💠 کلاس های تو در تو در جاوا 🕗زمان مطالعه: 1:30 دقیقه 🔆 یکی از ویژگی های زبان جاوا، تعریف کلاس ها بصورت تو در تو میباشد. در واقع این قابلیت به شما اجازه میدهد که کلاس های مرتبط به هم را دسته بندی کنید. یا به عبارتی کلاس هایی که فقط در کنار هم استفاده میشوند…
💬 میدونستین تو متد های کلاساتونم هم میتونین کلاس داخلی تعریف کنین؟...😁
👍16👎3
Media is too big
VIEW IN TELEGRAM
#یکبار_برای_همیشه
چرا وقتی یک آبجکت رو چاپ میکنیم، خروجی زیر رو داره؟
[I@12b231e
Employee@312b4a3
- خروجی بالا دقیقا چیه؟
- چجور میشه تغییرش داد؟
- هش کد چیه؟ ادرس حافظست یا...؟
- متد toString چیست؟
⭕️ هنگ درام: کیا رکنی
———
#hashcode #toString
🟡 @PieceJava
چرا وقتی یک آبجکت رو چاپ میکنیم، خروجی زیر رو داره؟
[I@12b231e
Employee@312b4a3
- خروجی بالا دقیقا چیه؟
- چجور میشه تغییرش داد؟
- هش کد چیه؟ ادرس حافظست یا...؟
- متد toString چیست؟
⭕️ هنگ درام: کیا رکنی
———
#hashcode #toString
🟡 @PieceJava
❤13👍5👏2
💠 ده تا از پرکاربرد ترین کلید های میانبر در #Intellij_IDEA
#shortcut
#keys #Intellij #IDEA
〽️ @PiECEJAVA
#shortcut
#keys #Intellij #IDEA
〽️ @PiECEJAVA
❤5
تیکه پاره های جاوا
💠 ده تا از پرکاربرد ترین کلید های میانبر در #Intellij_IDEA #shortcut #keys #Intellij #IDEA 〽️ @PiECEJAVA
🔆 یکی از معروف ترین IDE های جاوا، اینتلجی هستش (Intellij IDEA) که توی این پست روی صحبتمون با کلیدهای میانبر پر استفاده در اینتلیجی هست:
⚡️ کلید Alt + Enter
وقتی برنامه روی یه خط کد خطای کمپایل داره (خطوطی که مستقیم قبل از اجرا خود ide زیرشون به رنگ قرمز خط میکشه) میتونید با موس روی کد کلیک کنید و Alt + Enter رو همزمان بگیرید تا پیشنهادات IDE برای رفع خطا ظاهر بشه.
البته نه فقط برای خطا بلکه اگه اخطار هم داشته باشید (هایلایت های به رنگ زرد)، در این حالت هم میتونید روی کد کلیک و با گرفتن همزمان کلید های Alt + Enter پیشنهادات اینتلیجی برای رفع اخطار رو مشاهده کنید.
⚡️کلید F2
برای رفتن به سر سطری که ارور داره بجای استفاده از اسکرول بار یا کلیک موس، میتونید از کلید F2 استفاده کنید. هر بار زدن کلید F2 باعث میشه به ارور بعدی پرش کنید.
⚡️کلید Alt+1 یا ⌘1
برای باز کردن منوی Project فقط کافیه از کلید ترکیبی Alt + 1 استفاده کنید
⚡️کلید Esc
بعد از باز کردن منوی project اگه میخواین دوباره برگردین رو صفحه کد، فقط کافیه Esc رو بزنید :)
⚡️کلید Ctrl + E یا ⌘E
بکمک این کلید ترکیبی میتونید فایل های اخیری که باز کردید رو مشاهده کنید. برای مثال آخرین کلاس هایی که چک کردید.. ضمنا بوسیله این میانبر، میتونید حتی باقی پنجره ها از جمله (Problems)(Bookmarks) و حتی اونایی که کلید میانبر هم ندارن رو مشاهده کنید.
⚡️کلید Ctrl + B یا ⌘B
احتمالا پیش اومده که توی کدتون به یه داده برخورد کردید و میخواستید بدونید که کجا تعریف شده. تو این حالت میتونید از کلید Ctrl + B استفاده کنید. در واقع از طریق این میانبر به جایی که برای اولین بار داده تعریف شده پرش میکنید.
⚡️کلید Alt + F7
اما اگه روی تعریف داده بودید ولی میخواستید ببینید که این تعریف کجا ها استفاده شده، میتونید از کلید Alt + F7 استفاده کنید.
⚡️کلید Ctrl+ W یا Shift + Ctrl + W یا ⌥↑ یا ⌥↓
💬 این یکی رو من به شخصه دوست دارم D:
بوسیله این کلید میتونید بلاک کد اطراف cursor (نشونگر ماوس) رو انتخاب کنید. مثلا به فرض اگه نشونگر روی بلاک for هستش، با زدن Ctrl + W کل بلاک for انتخاب میشه. البته با هر بار زدن این کلید، محدوده انتخابی گسترده تر و گسترده تر میشه.
⚡️کلید Ctrl + / یا ⌘/
برای کامنت کردن یک خط کد، فقط کافیه نشونگر ماوس روی خط کد باشه تا با زدن یکبار Ctrl + / کل خط به یک کامنت تک خطی تبدیل بشه
⚡️کلید میانبر Shift + Ctrl + Enter یا ⇧⌘⏎
برای کامل کردن خط کد میتونید از این کلید ترکیبی استفاده کنید. البته اجازه بدید یکم بیشتر در این مورد صحبت کنیم. مثلا حتی برای قرار دادن سمیکالن، برای قرار دادن براکت باز و بسته برای دستور if, for و... میتونید بعد از نوشتن کد، همزمان این سه کلید رو فشار بدید تا کد بصورت خودکار تکمیل بشه
—————
〽️@PiECEJAVA
⚡️ کلید Alt + Enter
وقتی برنامه روی یه خط کد خطای کمپایل داره (خطوطی که مستقیم قبل از اجرا خود ide زیرشون به رنگ قرمز خط میکشه) میتونید با موس روی کد کلیک کنید و Alt + Enter رو همزمان بگیرید تا پیشنهادات IDE برای رفع خطا ظاهر بشه.
البته نه فقط برای خطا بلکه اگه اخطار هم داشته باشید (هایلایت های به رنگ زرد)، در این حالت هم میتونید روی کد کلیک و با گرفتن همزمان کلید های Alt + Enter پیشنهادات اینتلیجی برای رفع اخطار رو مشاهده کنید.
⚡️کلید F2
برای رفتن به سر سطری که ارور داره بجای استفاده از اسکرول بار یا کلیک موس، میتونید از کلید F2 استفاده کنید. هر بار زدن کلید F2 باعث میشه به ارور بعدی پرش کنید.
⚡️کلید Alt+1 یا ⌘1
برای باز کردن منوی Project فقط کافیه از کلید ترکیبی Alt + 1 استفاده کنید
⚡️کلید Esc
بعد از باز کردن منوی project اگه میخواین دوباره برگردین رو صفحه کد، فقط کافیه Esc رو بزنید :)
⚡️کلید Ctrl + E یا ⌘E
بکمک این کلید ترکیبی میتونید فایل های اخیری که باز کردید رو مشاهده کنید. برای مثال آخرین کلاس هایی که چک کردید.. ضمنا بوسیله این میانبر، میتونید حتی باقی پنجره ها از جمله (Problems)(Bookmarks) و حتی اونایی که کلید میانبر هم ندارن رو مشاهده کنید.
⚡️کلید Ctrl + B یا ⌘B
احتمالا پیش اومده که توی کدتون به یه داده برخورد کردید و میخواستید بدونید که کجا تعریف شده. تو این حالت میتونید از کلید Ctrl + B استفاده کنید. در واقع از طریق این میانبر به جایی که برای اولین بار داده تعریف شده پرش میکنید.
⚡️کلید Alt + F7
اما اگه روی تعریف داده بودید ولی میخواستید ببینید که این تعریف کجا ها استفاده شده، میتونید از کلید Alt + F7 استفاده کنید.
⚡️کلید Ctrl+ W یا Shift + Ctrl + W یا ⌥↑ یا ⌥↓
💬 این یکی رو من به شخصه دوست دارم D:
بوسیله این کلید میتونید بلاک کد اطراف cursor (نشونگر ماوس) رو انتخاب کنید. مثلا به فرض اگه نشونگر روی بلاک for هستش، با زدن Ctrl + W کل بلاک for انتخاب میشه. البته با هر بار زدن این کلید، محدوده انتخابی گسترده تر و گسترده تر میشه.
⚡️کلید Ctrl + / یا ⌘/
برای کامنت کردن یک خط کد، فقط کافیه نشونگر ماوس روی خط کد باشه تا با زدن یکبار Ctrl + / کل خط به یک کامنت تک خطی تبدیل بشه
⚡️کلید میانبر Shift + Ctrl + Enter یا ⇧⌘⏎
برای کامل کردن خط کد میتونید از این کلید ترکیبی استفاده کنید. البته اجازه بدید یکم بیشتر در این مورد صحبت کنیم. مثلا حتی برای قرار دادن سمیکالن، برای قرار دادن براکت باز و بسته برای دستور if, for و... میتونید بعد از نوشتن کد، همزمان این سه کلید رو فشار بدید تا کد بصورت خودکار تکمیل بشه
—————
〽️@PiECEJAVA
❤11👍6
This media is not supported in your browser
VIEW IN TELEGRAM
#فان
از امروز چاپ هلو ورلد فقط اینطوری😁👍
import java.util.Random;
public class Helloworld {
public static void main(String[] args) throws InterruptedException {
String expectedOutput = "HELLO WORLD :D";
String guessOutput = "";
Random random = new Random();
int min = 32;
int max = 127;
int i = 0;
do {
char expectedChar = expectedOutput.charAt(i);
char randomGuess = (char) (random.nextInt(max - min) + min);
System.out.println(guessOutput + randomGuess);
Thread.sleep(1);
if (randomGuess == expectedChar) {
guessOutput+=randomGuess;
i++;
}
} while (i != expectedOutput.length());
}
}
———
〽️@PieceJava
از امروز چاپ هلو ورلد فقط اینطوری😁👍
import java.util.Random;
public class Helloworld {
public static void main(String[] args) throws InterruptedException {
String expectedOutput = "HELLO WORLD :D";
String guessOutput = "";
Random random = new Random();
int min = 32;
int max = 127;
int i = 0;
do {
char expectedChar = expectedOutput.charAt(i);
char randomGuess = (char) (random.nextInt(max - min) + min);
System.out.println(guessOutput + randomGuess);
Thread.sleep(1);
if (randomGuess == expectedChar) {
guessOutput+=randomGuess;
i++;
}
} while (i != expectedOutput.length());
}
}
———
〽️@PieceJava
😁7👍3👏3🤔1
تیکه پاره های جاوا pinned «💬 لینک گروه تیکه پاره های جاوا جهت پرسش و پاسخ: https://t.iss.one/+ReyHHkFq42U5Mjg0»
Media is too big
VIEW IN TELEGRAM
#یکبار_برای_همیشه
❓ چجوری میشه از تاریخ داخل برنامه هامون استفاده کنیم؟
⏰ نحوه کار با API جدید برای تاریخ در جاوا
🪲 00:27 - باگ تاریخی Y2K و اختلال سراسری در سیستم های دیجیتالی کل جهان
🕑 01:54 کلاس Date
🕒 04:47 مشکلات کلاس Date
🕓 05:23 معرفی Date Time API
🕕 06:15 معرفی کلاس Local Date و نحوه نمونه سازی از Local Date
🕖 8:08 بررسی اینام DayOfWeek
🕗 09:53 بررسی متد های کلاس LocalDate
⭕️ قسمت اول
🎬 تماشا از طریق آپارات
———————
#localDate #date #DayOfWeek
〽️@PiECEJAVA
❓ چجوری میشه از تاریخ داخل برنامه هامون استفاده کنیم؟
⏰ نحوه کار با API جدید برای تاریخ در جاوا
🪲 00:27 - باگ تاریخی Y2K و اختلال سراسری در سیستم های دیجیتالی کل جهان
🕑 01:54 کلاس Date
🕒 04:47 مشکلات کلاس Date
🕓 05:23 معرفی Date Time API
🕕 06:15 معرفی کلاس Local Date و نحوه نمونه سازی از Local Date
🕖 8:08 بررسی اینام DayOfWeek
🕗 09:53 بررسی متد های کلاس LocalDate
⭕️ قسمت اول
🎬 تماشا از طریق آپارات
———————
#localDate #date #DayOfWeek
〽️@PiECEJAVA
❤9👏1
🟡 دوره خصوصی شی گرایی در جاوا
سلام دوستان وقتتون بخیر
تا قبل از عید قصد برگزاری دوره ای رو داریم برای مبحث شی گرایی در جاوا به همراه آشنایی اولیه با مفاهیم پایگاه داده.
💬 دوره کاملاً پروژه محوره یعنی پس از هر جلسه، تمریناتی داده میشه که میبایست تا قبل از جلسه بعدی انجام بدید + پشتیبانی آنلاین
💡 هدف از برگزاری جلسات یادگیری عمیق تر مباحث شی گرایی هست.
مفاهیمی که پوشش داده میشه:
🔅مقدمات OOP
🔅 مفهوم ترکیب
🔅 ارث بری
🔅 ابسترکت
🔅 اینترفیس
🔅 مفهوم جنریک و کلاس های جنریک.
🔺 البته در نظر داشته باشید که اینها عنوان جلسات هست و برای هر عنوان تمرین و پروژه داریم.
🟡 برای هماهنگی پیام بدید:
🆔 @MRVJ475
~ موفق باشید
~ محمدرضا عظیمی فرد
〽️@PiECEJAVA
سلام دوستان وقتتون بخیر
تا قبل از عید قصد برگزاری دوره ای رو داریم برای مبحث شی گرایی در جاوا به همراه آشنایی اولیه با مفاهیم پایگاه داده.
💬 دوره کاملاً پروژه محوره یعنی پس از هر جلسه، تمریناتی داده میشه که میبایست تا قبل از جلسه بعدی انجام بدید + پشتیبانی آنلاین
💡 هدف از برگزاری جلسات یادگیری عمیق تر مباحث شی گرایی هست.
مفاهیمی که پوشش داده میشه:
🔅مقدمات OOP
🔅 مفهوم ترکیب
🔅 ارث بری
🔅 ابسترکت
🔅 اینترفیس
🔅 مفهوم جنریک و کلاس های جنریک.
🔺 البته در نظر داشته باشید که اینها عنوان جلسات هست و برای هر عنوان تمرین و پروژه داریم.
🟡 برای هماهنگی پیام بدید:
🆔 @MRVJ475
~ موفق باشید
~ محمدرضا عظیمی فرد
〽️@PiECEJAVA
👍10❤2
تیکه پاره های جاوا pinned «🟡 دوره خصوصی شی گرایی در جاوا سلام دوستان وقتتون بخیر تا قبل از عید قصد برگزاری دوره ای رو داریم برای مبحث شی گرایی در جاوا به همراه آشنایی اولیه با مفاهیم پایگاه داده. 💬 دوره کاملاً پروژه محوره یعنی پس از هر جلسه، تمریناتی داده میشه که میبایست تا قبل…»
تیکه پاره های جاوا
🟡 دوره خصوصی شی گرایی در جاوا سلام دوستان وقتتون بخیر تا قبل از عید قصد برگزاری دوره ای رو داریم برای مبحث شی گرایی در جاوا به همراه آشنایی اولیه با مفاهیم پایگاه داده. 💬 دوره کاملاً پروژه محوره یعنی پس از هر جلسه، تمریناتی داده میشه که میبایست تا قبل…
⭕️ دوستان شروع جلسات از هفته آینده هستش. جلسات دو روز آخر هر هفته برگزار میشه
❌ ظرفیت باقیمانده 2 نفر
❌ ظرفیت باقیمانده 2 نفر
تیکه پاره های جاوا
❌ظرفیت باقیمانده 1 نفر
سلام دوستان
ظرفیت اخر همچنان خالی هستش اما جلساتمون از فردا شب شروع میشه.
در خصوص دوره بعدی انشالله برای بعد از عید هم کلاس داریم🌸 اطلاع رسانی میشه حتما
پ.ن: بخش دوم کار با ساعت و تاریخ امشب یا فردا روی کانال قرار میگیره
ظرفیت اخر همچنان خالی هستش اما جلساتمون از فردا شب شروع میشه.
در خصوص دوره بعدی انشالله برای بعد از عید هم کلاس داریم🌸 اطلاع رسانی میشه حتما
پ.ن: بخش دوم کار با ساعت و تاریخ امشب یا فردا روی کانال قرار میگیره
❤4
Media is too big
VIEW IN TELEGRAM
#یکبار_برای_همیشه
❓ چجوری میشه از ساعت داخل برنامه هامون استفاده کنیم؟
⏰ نحوه کار با API جدید برای ساعت در جاوا
🕐 00:12 کار با کلاس LocalTime
🕑 06:12 نحوه کار با منطقه زمانی
⚙️ 8:25 تمرین در رابطه با LocalTime و ZoneId
🕓 08:42 کار با DateTimeFormatter و خروجی ساعت و تاریخ بر اساس فرمت دلخواه
🕔 9:30 تعریف فرمت خروجی بوسیله متد OfPattern
🕕 11:29 بررسی لیست الگو های مورد استفاده در DateTimeFormatter
⚙️ 12:38 تمرین DateTimeFormatter
🕗 14:12 شروع آشنایی با LocalDateTime
⭕️ قسمت دوم
🎬 تماشا از طریق آپارات
🔗 جهت مشاهده قسمت اول کلیک کنید
———————
#localTime #Time #ZoneId #Zone #DateTimeFormatter
〽️@PiECEJAVA
❓ چجوری میشه از ساعت داخل برنامه هامون استفاده کنیم؟
⏰ نحوه کار با API جدید برای ساعت در جاوا
🕐 00:12 کار با کلاس LocalTime
🕑 06:12 نحوه کار با منطقه زمانی
⚙️ 8:25 تمرین در رابطه با LocalTime و ZoneId
🕓 08:42 کار با DateTimeFormatter و خروجی ساعت و تاریخ بر اساس فرمت دلخواه
🕔 9:30 تعریف فرمت خروجی بوسیله متد OfPattern
🕕 11:29 بررسی لیست الگو های مورد استفاده در DateTimeFormatter
⚙️ 12:38 تمرین DateTimeFormatter
🕗 14:12 شروع آشنایی با LocalDateTime
⭕️ قسمت دوم
🎬 تماشا از طریق آپارات
🔗 جهت مشاهده قسمت اول کلیک کنید
———————
#localTime #Time #ZoneId #Zone #DateTimeFormatter
〽️@PiECEJAVA
👍8❤2
سلام دوستان
امیدوارم حالتون عالی باشه
انشالله سال 1402سالی پر از اتفاقات خوب براتون باشه و آغازگر تغییری باشه که انتظارشو دارین ^ ^
بهترین هارو براتون آرزو میکنم❤️
🌸سال نو مبارک
🔆طراح بنر
@PieceJava
امیدوارم حالتون عالی باشه
انشالله سال 1402سالی پر از اتفاقات خوب براتون باشه و آغازگر تغییری باشه که انتظارشو دارین ^ ^
بهترین هارو براتون آرزو میکنم❤️
🌸سال نو مبارک
🔆طراح بنر
@PieceJava
❤13👏1
💠 آشنایی مقدماتی با Streams API
🕓زمان مطالعه: 3:30 دقیقه
🔆 یکی از بزرگ ترین فیچر های جاوا 8 ، اضافه شدن Stream API بود. البته این استریم با Stream I/O کاملا متفاوت است و این دو اشتراک خیلی کمی با هم دارند.
ا Stream I/O برای ارسال و دریافت داده مورد استفاده قرار میگیرد درصورتی که Stream API برای پردازش و جمع آوری دیتا از یک مجموعه کاربرد دارد (مجموعه مثل لیست ها، آرایه و... ). در واقع با توجه به متد ها و عملیات هایی که استریم به شما ارائه میدهد، میتوانید داده های مشخصی را از مجموعه موردنظرتان دریافت کنید. البته در نظر داشته باشید با توجه به الگوی طراحی که استریم پیاده سازی میکند، متد ها به هم مرتبط هستند و هر کدام به نحوی تا خروجی نهایی میتوانند به هم متصل شوند.
#Streams #streams_APi
@PieceJava
❤7
تیکه پاره های جاوا
💠 آشنایی مقدماتی با Streams API 🕓زمان مطالعه: 3:30 دقیقه 🔆 یکی از بزرگ ترین فیچر های جاوا 8 ، اضافه شدن Stream API بود. البته این استریم با Stream I/O کاملا متفاوت است و این دو اشتراک خیلی کمی با هم دارند. ا Stream I/O برای ارسال و دریافت داده مورد…
⭕️❌ در این قسمت در حال حاضر بصورت مقدماتی با Stream API آشنا میشویم و با بعضی از توابع این API کار میکنیم. جزئیات حرفه ای تر در قالب یک مینی دوره در کانال قرار خواهد گرفت.
🟡 نحوه ایجاد استریم
🔸برای ایجاد استریم میتوانید بصورت مستقیم یک استریم برای مجموعه ایجاد کنید. برای مثال:
int[] numbers = {1,2,3,4,5};
Stream.of(numbers);
🔸و یا میتوانید از مجموعه ای که از پیش تعریف شده است، یک استریم دریافت کنید(بوسیله متد stream):
List<Integer> numbers = Arrays.asList(1,2,3,4,4,5);
numbers.stream();
🔸و یا حتی میتوانید بر روی تعدادی خاص از عناصر، استریم ایجاد کنید:
List<Integer> numbers = Arrays.asList(1,2,3,4,4,5);
Stream.of(
numbers.get(1),
numbers.get(2),
numbers.get(3));
🟨 عملیات های استریم
تا اینجا با نحوه ایجاد استریم آشنا شدیم اما اجازه دهید تا با هم عملیات های استریم را بررسی کنیم.
ساده ترین و مرسوم ترین عملیات استریم، forEach هستش که روی کل داده های پیمایش میکند و عملیاتی را روی داده ها انجام میدهد. برای مثال:
numbers.stream().forEach(item -> System.out.println(item));
⛓️در مورد عبارات لامبدا ازینجا بخوانید
در اینجا item نشاندهنده عنصر انتخاب شده در هر دور پیمایش است. -> به این معناست که در هر پیمایش، بر روی item عملیات x را انجام بده (در اینجا منظور از عملیات x، چاپ مقدار item میشود).
🔸 عملیات فیلتر
numbers.stream()
.filter(integer -> integer>3)
.forEach(i -> System.out.println(i));
این عملیات، داده هارا بر اساس یک شرط خاص فیلتر میکند. برای مثال دستور بالا به معنای دریافت داده های بزرگ تر از 3 و چاپ آنها با دستور forEach میباشد.
🔸عملیات count
این عملیات همانطور که از نامش پیداست، تعداد داده های دریافتی را بازگشت میدهد. برای مثال:
long count = numbers.stream()
.filter(integer -> integer>3)
.count();
🔸عملیات Collect
این عملیات داده های دریافتی را با توجه به عملیات های انجام شده، جمع آوری و در قالب یک داده ساختار خروجی میدهد:
numbers.stream()
.filter(integer -> integer>3)
.collect(Collectors.toList())
.forEach(integer -> System.out.println(integer));
البته در نظر داشته باشید که دستور forEach برای واسط List نیز جداگانه در دسترس است و برای استفاده از این دستور، هیچ الزامی به استفاده از استریم نیست:
numbers.foreach(integer -> System.out.println(integer));
🔸 عملیات Sorted
این عملیات، داده هارا بصورت نزولی به صعودی مرتب و خروجی میدهد. برای مثال:
List<Integer> numbers = Arrays.asList(1,2,3,2,1,34,5,7,5,4,2,1);
numbers.stream()
.filter(integer -> integer>3)
.sorted()
.forEach(i -> System.out.println(i));
جدا از استریم های بالا، جاوای 8 شامل استریم های ویژه ای برای کار با داده های Int, long, double و .. نیز میشود. برای مثال IntStream که عملیات های ویژه ای در رابطه با داده های صحیح ارائه میدهد:
IntStream.range(1,4).forEach(i -> System.out.println(i));
البته در نظر داشته باشید که در اینجا رنج از 1 تا 3 میباشد و خود 4 شامل این بازه نمیشود.
🔸 عملیات نگاشت یا تبدیل (Mapto...):
در این حالت داده ها از مقداری به مقدار دیگر نگاشت میشوند. مثلا در نمونه ی زیر، داده ها ده برابر میشوند و در خروجی نمایش داده میشوند. عملیات های MaptoInt، MaptoDouble و MapToLong از جمله عملیات های نگاشت در استریم هستند:
List<Integer> numbers = Arrays.asList(1,2,4,5,7,3,1,3,6,8,4,2);
numbers.stream()
.mapToInt(number-> number*10)
.forEach(e -> System.out.print(e+", "));
💡 تا اینجای کار با ملزومات اولیه استریم اشنا شدیم. در ادامه چند مثال از کاربرد استریم هارا قرار خواهیم داد.
———
〽️@PieceJava
🟡 نحوه ایجاد استریم
🔸برای ایجاد استریم میتوانید بصورت مستقیم یک استریم برای مجموعه ایجاد کنید. برای مثال:
int[] numbers = {1,2,3,4,5};
Stream.of(numbers);
🔸و یا میتوانید از مجموعه ای که از پیش تعریف شده است، یک استریم دریافت کنید(بوسیله متد stream):
List<Integer> numbers = Arrays.asList(1,2,3,4,4,5);
numbers.stream();
🔸و یا حتی میتوانید بر روی تعدادی خاص از عناصر، استریم ایجاد کنید:
List<Integer> numbers = Arrays.asList(1,2,3,4,4,5);
Stream.of(
numbers.get(1),
numbers.get(2),
numbers.get(3));
🟨 عملیات های استریم
تا اینجا با نحوه ایجاد استریم آشنا شدیم اما اجازه دهید تا با هم عملیات های استریم را بررسی کنیم.
ساده ترین و مرسوم ترین عملیات استریم، forEach هستش که روی کل داده های پیمایش میکند و عملیاتی را روی داده ها انجام میدهد. برای مثال:
numbers.stream().forEach(item -> System.out.println(item));
⛓️در مورد عبارات لامبدا ازینجا بخوانید
در اینجا item نشاندهنده عنصر انتخاب شده در هر دور پیمایش است. -> به این معناست که در هر پیمایش، بر روی item عملیات x را انجام بده (در اینجا منظور از عملیات x، چاپ مقدار item میشود).
🔸 عملیات فیلتر
numbers.stream()
.filter(integer -> integer>3)
.forEach(i -> System.out.println(i));
این عملیات، داده هارا بر اساس یک شرط خاص فیلتر میکند. برای مثال دستور بالا به معنای دریافت داده های بزرگ تر از 3 و چاپ آنها با دستور forEach میباشد.
🔸عملیات count
این عملیات همانطور که از نامش پیداست، تعداد داده های دریافتی را بازگشت میدهد. برای مثال:
long count = numbers.stream()
.filter(integer -> integer>3)
.count();
🔸عملیات Collect
این عملیات داده های دریافتی را با توجه به عملیات های انجام شده، جمع آوری و در قالب یک داده ساختار خروجی میدهد:
numbers.stream()
.filter(integer -> integer>3)
.collect(Collectors.toList())
.forEach(integer -> System.out.println(integer));
البته در نظر داشته باشید که دستور forEach برای واسط List نیز جداگانه در دسترس است و برای استفاده از این دستور، هیچ الزامی به استفاده از استریم نیست:
numbers.foreach(integer -> System.out.println(integer));
🔸 عملیات Sorted
این عملیات، داده هارا بصورت نزولی به صعودی مرتب و خروجی میدهد. برای مثال:
List<Integer> numbers = Arrays.asList(1,2,3,2,1,34,5,7,5,4,2,1);
numbers.stream()
.filter(integer -> integer>3)
.sorted()
.forEach(i -> System.out.println(i));
جدا از استریم های بالا، جاوای 8 شامل استریم های ویژه ای برای کار با داده های Int, long, double و .. نیز میشود. برای مثال IntStream که عملیات های ویژه ای در رابطه با داده های صحیح ارائه میدهد:
IntStream.range(1,4).forEach(i -> System.out.println(i));
البته در نظر داشته باشید که در اینجا رنج از 1 تا 3 میباشد و خود 4 شامل این بازه نمیشود.
🔸 عملیات نگاشت یا تبدیل (Mapto...):
در این حالت داده ها از مقداری به مقدار دیگر نگاشت میشوند. مثلا در نمونه ی زیر، داده ها ده برابر میشوند و در خروجی نمایش داده میشوند. عملیات های MaptoInt، MaptoDouble و MapToLong از جمله عملیات های نگاشت در استریم هستند:
List<Integer> numbers = Arrays.asList(1,2,4,5,7,3,1,3,6,8,4,2);
numbers.stream()
.mapToInt(number-> number*10)
.forEach(e -> System.out.print(e+", "));
💡 تا اینجای کار با ملزومات اولیه استریم اشنا شدیم. در ادامه چند مثال از کاربرد استریم هارا قرار خواهیم داد.
———
〽️@PieceJava
Telegram
تیکه پاره های جاوا
💠 فانکشنال اینترفیس و بررسی عبارات لامبدا
🔆 فانکشنال اینترفیس در واقع به اینترفیسی گفته میشود که تنها یک متد ابسترکت را داشته باشد (Single Abstract Method) هر چند که همچنان میتواند دارای متد های استاتیک و دیفالت باشد. برای نشانه گذاری اینترفیس فانکشنال،…
🔆 فانکشنال اینترفیس در واقع به اینترفیسی گفته میشود که تنها یک متد ابسترکت را داشته باشد (Single Abstract Method) هر چند که همچنان میتواند دارای متد های استاتیک و دیفالت باشد. برای نشانه گذاری اینترفیس فانکشنال،…
👍6❤3
تیکه پاره های جاوا
⭕️❌ در این قسمت در حال حاضر بصورت مقدماتی با Stream API آشنا میشویم و با بعضی از توابع این API کار میکنیم. جزئیات حرفه ای تر در قالب یک مینی دوره در کانال قرار خواهد گرفت. 🟡 نحوه ایجاد استریم 🔸برای ایجاد استریم میتوانید بصورت مستقیم یک استریم برای مجموعه…
🔰 مثال شمردن حروف صدا دار
🔴 راه حل عادی:
String text="Hi Welcome to my world!";
List<Character> vowels = Arrays.asList('a','e','i','o','u');
int number = 0;
for (int i = 0; i < text.length(); i++) {
for (int j = 0; j < vowels.size(); j++) {
if(text.charAt(i)==vowels.get(j)){
number++;
break;
}
}
}
System.out.println(number);
🟢 راه حل به کمک استریم:
String text="Hi Welcome to my world!";
List<Character> vowels = Arrays.asList('a','e','i','o','u');
long count = text.chars().filter(e ->vowels.contains((char) e)).count();
System.out.println(count);
—————————
🔴 در باقی مثال ها بدلیل سادگی از نمایش راه حل عادی صرف نظر میکنیم
🟢 چاپ اعداد بخش پذیر بر 2 در بازه 0 تا 99 به کمک استریم:
IntStream.range(0,100).filter(n -> n%2==0).forEach(System.out::println);
🟢ذخیره الفبای انگلیسی (حروف بزرگ) داخل لیست به کمک استریم:
List<Character> alphabets = new ArrayList<>();
IntStream.range(0,26).map(e ->(e+65)).forEach(e-> alphabets.add((char) e));
alphabets.forEach(System.out::print);
🟢 مقدار دهی رندم یک آرایه توسط IntStream:
int[] arr = new Random().ints(40,0,100).toArray();
در اینجا متد Ints یک IntStream را برمیگرداند که این متد سه ورودی میگیرد. یعنی بترتیب: تعداد اعداد رندم (40) ، حد پایین (0) و حد بالا(100) برای تولید اعداد رندم
〽️@PieceJava
🔴 راه حل عادی:
String text="Hi Welcome to my world!";
List<Character> vowels = Arrays.asList('a','e','i','o','u');
int number = 0;
for (int i = 0; i < text.length(); i++) {
for (int j = 0; j < vowels.size(); j++) {
if(text.charAt(i)==vowels.get(j)){
number++;
break;
}
}
}
System.out.println(number);
🟢 راه حل به کمک استریم:
String text="Hi Welcome to my world!";
List<Character> vowels = Arrays.asList('a','e','i','o','u');
long count = text.chars().filter(e ->vowels.contains((char) e)).count();
System.out.println(count);
—————————
🔴 در باقی مثال ها بدلیل سادگی از نمایش راه حل عادی صرف نظر میکنیم
🟢 چاپ اعداد بخش پذیر بر 2 در بازه 0 تا 99 به کمک استریم:
IntStream.range(0,100).filter(n -> n%2==0).forEach(System.out::println);
🟢ذخیره الفبای انگلیسی (حروف بزرگ) داخل لیست به کمک استریم:
List<Character> alphabets = new ArrayList<>();
IntStream.range(0,26).map(e ->(e+65)).forEach(e-> alphabets.add((char) e));
alphabets.forEach(System.out::print);
🟢 مقدار دهی رندم یک آرایه توسط IntStream:
int[] arr = new Random().ints(40,0,100).toArray();
در اینجا متد Ints یک IntStream را برمیگرداند که این متد سه ورودی میگیرد. یعنی بترتیب: تعداد اعداد رندم (40) ، حد پایین (0) و حد بالا(100) برای تولید اعداد رندم
〽️@PieceJava
❤9👍3
