JavaRush /جاوا بلاگ /Random-UR /جاوا ڈویلپر کے انٹرویوز سے سوالات اور جوابات کا تجزیہ۔ حص...

جاوا ڈویلپر کے انٹرویوز سے سوالات اور جوابات کا تجزیہ۔ حصہ 6

گروپ میں شائع ہوا۔
ہیلو، دنیا! کسی بھی ڈویلپر کے لیے ترقی جاری رکھنا بہت ضروری ہے۔ بہر حال، اگر آپ رک جاتے ہیں، تو لاوارث بننے اور پوری طرح سے مارکیٹ سے باہر ہونے کا خطرہ ہے: آئی ٹی کی دنیا مسلسل ترقی کر رہی ہے اور آگے بڑھ رہی ہے، اور آپ کو اس کے ساتھ آگے بڑھنے کی ضرورت ہے۔ لیکن ایک ہی وقت میں، کوئی بھی صرف نئی اور تازہ ترین ٹیکنالوجیز پر توجہ نہیں دے سکتا، تاکہ کلاسیکی (کلاسیکی موضوعات) کے بارے میں بات کی جائے، بھولنا نہیں ہے۔ آج میں جاوا ڈویلپر کے لیے "کلاسک" عنوانات پر سوالات کا اپنا تجزیہ جاری رکھنا چاہتا ہوں۔ جاوا ڈویلپر کے انٹرویوز سے سوالات اور جوابات کا تجزیہ۔  حصہ 6 - 1میں نوٹ کرتا ہوں کہ میرے جوابات حتمی اتھارٹی نہیں ہیں - میں ان سوالات کے صحیح جوابات کو اسی طرح دیکھتا ہوں، اور ہو سکتا ہے کہ آپ ان میں سے کچھ سے متفق نہ ہوں۔ یہ بالکل نارمل ہوگا، اس لیے بلا جھجھک اپنی رائے کمنٹس میں شیئر کریں۔ تجزیہ کے کچھ حصوں کے لنکس مضمون کے آخر میں ہیں۔جاوا ڈویلپر کے انٹرویوز سے سوالات اور جوابات کا تجزیہ۔  حصہ 6 - 2

لائبریریاں اور معیارات

52. ہائبرنیٹ کیا ہے؟ جے پی اے اور ہائبرنیٹ میں کیا فرق ہے؟

میرے خیال میں اس سوال کا جواب دینے کے لیے، ہمیں پہلے یہ سمجھنا ہوگا کہ JPA کیا ہے ۔ JPA ایک تصریح ہے جو سادہ جاوا اشیاء کی آبجیکٹ-ریلیشنل میپنگ کو بیان کرتی ہے اور ایسی اشیاء کو ذخیرہ کرنے، بازیافت کرنے اور جوڑ توڑ کے لیے ایک API فراہم کرتی ہے۔ یعنی، جیسا کہ ہمیں یاد ہے، رشتہ دار ڈیٹا بیس (DBs) کئی ایک دوسرے سے منسلک جدولوں کی شکل میں پیش کیے جاتے ہیں۔ اور JPA ایک وسیع پیمانے پر قبول شدہ معیار ہے جو یہ بتاتا ہے کہ اشیاء کس طرح متعلقہ ڈیٹا بیس کے ساتھ تعامل کر سکتی ہیں۔ جیسا کہ آپ دیکھ سکتے ہیں، JPA تجریدی اور غیر محسوس چیز ہے۔ یہ خود خیال، نقطہ نظر کی طرح ہے. جاوا ڈویلپر کے انٹرویوز سے سوالات اور جوابات کا تجزیہ۔  حصہ 6 - 3ایک ہی وقت میں، ہائبرنیٹ ایک مخصوص لائبریری ہے جو JPA پیراڈائمز کو نافذ کرتی ہے ۔ یعنی اس لائبریری کی مدد سے آپ ریلیشنل ڈیٹا بیس کے ساتھ ایسی اشیاء کے ذریعے کام کر سکتے ہیں جو ڈیٹا بیس (اینٹیٹی) سے ڈیٹا کی نمائندگی کرتے ہیں۔ جیسا کہ وہ کہتے ہیں، یہ لائبریری جے پی اے کے نظریات کے بہت قریب ہے اور شاید اسی وجہ سے یہ مقبول ہوئی ہے۔ اور جیسا کہ آپ سمجھتے ہیں، استعمال کی مقبولیت مزید ترقی اور بہتری کے لیے ایک اچھی دلیل ہے۔ اس کے علاوہ، اس کے بار بار استعمال کے پیچھے ایک بہت بڑی کمیونٹی ہے جس نے اس ٹول سے متعلق تمام ممکنہ اور ناممکن سوالات کو پہلے ہی حل کر دیا ہے۔ یہاں ایک کتاب کی ایک مثال ہے جو اس ٹیکنالوجی کے تمام تاریک گوشوں کا تفصیل سے جائزہ لیتی ہے۔ یعنی، ہائبرنیٹ کا زیادہ سے زیادہ مطالعہ کیا گیا ہے اور، یہ پتہ چلتا ہے، قابل اعتماد ہے۔ دراصل، یہ کچھ بھی نہیں ہے کہ یہاں تک کہ بہار کی طرف JPA کا مثالی نفاذ عام طور پر ہڈ کے نیچے ہائبرنیٹ کا استعمال کرتا ہے۔

53. جھرن کیا ہے؟ اسے ہائبرنیٹ میں کیسے استعمال کیا جاتا ہے؟

جیسا کہ میں نے پہلے کہا، ہائبرنیٹ میں مواصلت ڈیٹا آبجیکٹ کے ذریعے کی جاتی ہے جسے entities کہتے ہیں ۔ یہ ادارے ڈیٹا بیس میں کچھ مخصوص جدولوں کی نمائندگی کرتے ہیں، اور جیسا کہ آپ کو یاد ہے، جاوا کلاسز میں دوسری کلاسوں کے حوالے شامل ہو سکتے ہیں۔ یہ تعلقات ڈیٹا بیس میں ظاہر ہوتے ہیں۔ ڈیٹا بیس میں، ایک اصول کے طور پر، یہ یا تو غیر ملکی کلیدیں ہیں (OneToOne، OneToMany، ManyToOne کے لیے) یا انٹرمیڈیٹ ٹیبلز (ManyToMany کے لیے)۔ آپ اس مضمون میں اداروں کے درمیان تعلق کے بارے میں مزید پڑھ سکتے ہیں ۔ جب آپ کی ہستی کے دیگر متعلقہ اداروں سے روابط ہوتے ہیں، تو کنکشن کی قسم کی نشاندہی کرنے کے لیے ان لنکس کے اوپر تشریحات رکھی جاتی ہیں: @OneToOne، @OneToMany، @ManyToOne، @ManyToMane، جن کے پیرامیٹرز میں آپ پراپرٹی کی قدر بتا سکتے ہیں - cascade - the اس کنکشن کے لیے جھرن کی قسم۔ JPA کے پاس ہستیوں کے ساتھ تعامل کے لیے مخصوص طریقے ہیں ( برقرار رہنا، محفوظ کرنا، انضمام کرنا...) ۔ کاسکیڈنگ کی قسمیں یہ ظاہر کرنے کے لیے بالکل استعمال کی جاتی ہیں کہ جب یہ طریقے ہدف ہستی پر استعمال کیے جاتے ہیں تو متعلقہ ڈیٹا کو کیسا برتاؤ کرنا چاہیے۔ تو، جھرن کی حکمت عملی کیا ہیں (کاسکیڈنگ کی اقسام)؟ جے پی اے کا معیار چھ قسم کے جھرنوں کا استعمال کرتا ہے:
  • PERSIST - محفوظ کرنے کی کارروائیاں جھرن میں ہوں گی ( save() اور persist() طریقوں کے لیے ۔ یعنی، اگر ہم دیگر اداروں سے وابستہ کسی ہستی کو محفوظ کرتے ہیں، تو وہ ڈیٹا بیس میں بھی محفوظ ہو جاتے ہیں (اگر وہ پہلے سے موجود نہیں ہیں)

  • MERGE - اپ ڈیٹ کی کارروائیاں جھرن میں ہوں گی ( merge() طریقہ کے لیے )

  • REMOVE - ہٹانے کی کارروائیاں جھرن ( remove() طریقہ میں ہوتی ہیں

  • ALL - ایک ہی وقت میں تین جھرنے والی کارروائیوں پر مشتمل ہے - PERSIST - ضم کریں - ہٹائیں

JPA ایک مستقل وجود کا تصور رکھتا ہے - ڈیٹا بیس میں اس کے ڈیٹا سے وابستہ ایک ہستی، جسے موجودہ سیشن (کنکشن) کے ذریعے کنٹرول کیا جاتا ہے ۔ اگر آپ اسے تبدیل کرتے ہیں، لیکن ڈیٹا بیس میں ہونے والی تبدیلیوں کو محفوظ نہیں کرتے ہیں، تب بھی ڈیٹا بیس میں اس کا ڈیٹا تبدیل کیا جائے گا۔
  • DETACH - متعلقہ اداروں کا انتظام سیشن ( detach() طریقہ کے ذریعے نہیں کیا جائے گا ۔ یعنی، جب وہ تبدیل ہوتے ہیں، ڈیٹا بیس میں ان کے ڈیٹا میں کوئی خودکار تبدیلی نہیں آئے گی - وہ مستقل حالت سے علیحدہ ہو جاتے ہیں (ایک ایسا ادارہ جو JPA کے زیر انتظام نہیں ہے)

  • ریفریش - جب بھی کسی ہستی کو ڈیٹا بیس سے ڈیٹا کے ساتھ اپ ڈیٹ کیا جاتا ہے ( refresh() - اپ ڈیٹ شدہ اشیاء کو اپ ڈیٹ کرتا ہے، متعلقہ اداروں کو اسی طرح اپ ڈیٹ کیا جاتا ہے۔ مثال کے طور پر، آپ نے ڈیٹا بیس سے لیے گئے ڈیٹا کو کسی طرح تبدیل کر دیا ہے اور اس کی اصل قدریں واپس کرنا چاہتے ہیں۔ ایسی صورت میں یہ آپریشن آپ کے لیے مفید ثابت ہوگا۔

جاوا ڈویلپر کے انٹرویوز سے سوالات اور جوابات کا تجزیہ۔  حصہ 6 - 4ہائبرنیٹ ان تمام معیاری جھرنوں کی کارروائیوں کی حمایت کرتا ہے، لیکن اس کے اپنے تین کو بھی متعارف کراتا ہے:
  • replicate - استعمال کیا جاتا ہے جب ہمارے پاس ایک سے زیادہ ڈیٹا سورس ہو اور ہم چاہتے ہیں کہ ڈیٹا کو ہم آہنگ کیا جائے (ہائبرنیٹ طریقہ - نقل تیار کریں)۔ تمام اداروں کے پاس شناخت کنندہ (id) ہونا ضروری ہے تاکہ ان کی نسل کے ساتھ کوئی مسئلہ نہ ہو (تاکہ ایک ہی ہستی کے پاس مختلف ڈیٹا بیس کے لیے مختلف آئی ڈی نہ ہوں)

  • SAVE_UPDATE - cascade save/delete (ہائبرنیٹ طریقہ کے لیے - saveOrUpdate )

  • LOCK DETACHED کے لیے الٹا آپریشن ہے : یہ علیحدہ ہستی کو دوبارہ استقامت کی حالت میں منتقل کرتا ہے ، یعنی موجودہ سیشن سے ہستی دوبارہ ٹریک ہو جائے گی۔

اگر کاسکیڈنگ کی قسم منتخب نہیں کی جاتی ہے، تو کسی ہستی پر کسی بھی کارروائی کا اس سے وابستہ دیگر اداروں پر کوئی اثر نہیں پڑے گا۔

54. کیا ایک ہستی کی کلاس خلاصہ ہو سکتی ہے؟

پیراگراف 2.1 میں JPA کی وضاحت میں ہستی کی کلاس ایک لائن ہے: " تجریدی اور ٹھوس دونوں کلاسیں ہستی ہو سکتی ہیں ۔" تو جواب ہاں میں ہے، ایک تجریدی کلاس ایک ہستی ہو سکتی ہے اور اسے @Entity کے ساتھ تشریح کی جا سکتی ہے۔

55. ایک ہستی مینیجر کیا ہے؟ وہ کیا ذمہ دار ہے؟

سب سے پہلے، میں یہ نوٹ کرنا چاہوں گا کہ EntityManager JPA کے کلیدی اجزاء میں سے ایک ہے ، جو ڈیٹا بیس کے ساتھ اداروں کے ساتھ تعامل کے لیے استعمال ہوتا ہے۔ عام طور پر، یہ ہستی اور ڈیٹا بیس کے درمیان تعامل کے طریقوں کو کہتے ہیں (مسلسل ہونا، ضم کرنا، ہٹانا، الگ کرنا)... لیکن میں یہ بھی نوٹ کروں گا کہ یہ جزو، ایک اصول کے طور پر، پوری درخواست کے لیے ایک نہیں ہے: اکثر یہ ہلکا پھلکا ہے اور اکثر ہٹا دیا جاتا ہے اور EntityManagerFactory کا استعمال کرتے ہوئے ایک نیا بنایا جاتا ہے ۔ اگر ہم JDBC کے ساتھ متوازی بنائیں ، جہاں EntityManagerFactory ڈیٹا سورس کا ایک اینالاگ ہو گا ، تو EntityManager، بدلے میں، کنکشن کا ایک اینالاگ ہو گا ۔ اس سے پہلے میں نے ایک مستقل وجود کا ذکر کیا تھا ، ایک ایسی ہستی کے طور پر جو موجودہ کنکشن کے ذریعے کنٹرول کیا جاتا ہے۔ لہذا: اس ہستی کا انتظام عین مطابق EntityManager کے ذریعے کیا جاتا ہے ، جس کا موجودہ کنکشن اور TransactionManager سے گہرا تعلق ہے ، جو لین دین کو کھولنے/ بند کرنے کا ذمہ دار ہے۔ مزید نیچے دی گئی تصویر میں آپ کسی ہستی کا لائف سائیکل دیکھ سکتے ہیں: Разбор вопросов и ответов с собеседований на Java-разработчика. Часть 6 - 5EntityManager ہستی کا انتظام اس وقت کرتا ہے جب وہ نظم شدہ مرحلے پر ہوتا ہے (اس وقت یہ مستقل ہے، کیونکہ اس کا EntityManager کے ساتھ تعلق ہے)۔ یعنی یہ اب نیا نہیں ہے اور ابھی تک ہٹایا نہیں گیا ہے۔ ہم کہہ سکتے ہیں کہ جب کوئی ہستی نئی ہوتی ہے یا ہٹا دی جاتی ہے تو وہ بھی الگ ہوتی ہے، کیونکہ یہ EntityManager کے زیر انتظام نہیں ہے۔ EntityManager کے لیے مختلف حکمت عملی ہیں۔ یعنی، پوری ایپلیکیشن کے لیے ایک سنگلٹن EntityManager ہو سکتا ہے، یا ہر بار، ہر کنکشن کے لیے ایک نیا بنایا جا سکتا ہے۔ اگر آپ Spring استعمال کرتے ہیں، تو EntityManager کی تخلیق/حذف خود بخود ہڈ کے نیچے کنٹرول ہو جاتا ہے (لیکن اس کا مطلب یہ نہیں ہے کہ آپ اسے اپنی مرضی کے مطابق نہیں بنا سکتے ^^)۔ یہ کہنے کے قابل ہے کہ ایک یا زیادہ EntityManagers استقامت کا سیاق و سباق تشکیل دیتے ہیں ۔ استقامت سیاق و سباق ایک ایسا ماحول ہے جس میں ہستیوں کی مثالیں ڈیٹا بیس میں ملتی جلتی ہستیوں کے ساتھ ہم آہنگ ہوتی ہیں (جیسا کہ میں نے کہا، یہ صرف مستقل اداروں کے لیے کام کرتا ہے)۔ اگر آپ جے پی اے (جس کی میں بہت زیادہ سفارش کرتا ہوں) کے بارے میں گہرائی میں غور کریں تو آپ کو ان تصورات کا سامنا بہت، اکثر ہوگا۔

56. Assert کلاس کیا ہے؟ اسے کیوں استعمال کریں؟

میں نے JPA میں ایسی کلاس کے بارے میں نہیں سنا ہے ، لہذا میں فرض کروں گا کہ اس سے لائبریری کی JUnit کلاس مراد ہے، جو کوڈ کی یونٹ ٹیسٹنگ کے لیے استعمال ہوتی ہے۔ اس لائبریری کی کلاس، Assert ، کوڈ پر عمل درآمد کے نتائج کو چیک کرنے کے لیے استعمال کیا جاتا ہے ( assert ایک بیان ہے کہ آپ کے پاس کسی خاص جگہ پر ایک مخصوص حالت/ڈیٹا ہے)۔ مثال کے طور پر، آپ ایک ایسے طریقہ کی جانچ کر رہے ہیں جس سے ایک بلی بنائی جائے۔ آپ ایک طریقہ چلاتے ہیں اور کچھ نتیجہ حاصل کرتے ہیں:
Cat resultOfTest = createCat();
لیکن آپ کو یہ یقینی بنانے کی ضرورت ہے کہ یہ صحیح طریقے سے بنایا گیا تھا، ٹھیک ہے؟ لہذا، آپ نے پہلے ایک مخصوص cat - expectCat - کو دستی طور پر بالکل ان پیرامیٹرز کے ساتھ بنایا تھا جو آپ createCat() طریقہ سے حاصل کردہ cat سے توقع کرتے ہیں ۔ اگلا، آپ نتائج کی تصدیق کے لیے Assert کلاس استعمال کرتے ہیں:
Assert.assertEquals(resultOfTest, expectedCat);
اگر بلیاں مختلف ہیں تو، ایک AssertionError استثناء پھینک دیا جائے گا ، جو ہمیں بتاتا ہے کہ متوقع نتائج آپس میں نہیں ملتے ہیں۔ Assert کلاس میں بہت سے مختلف طریقے ہیں جو متوقع نتائج کی تصدیق کے بہت سے کاموں کا احاطہ کرتے ہیں۔ ان میں سے کچھ یہ ہیں:
  • assertTrue(<boolean>) - دلیل کے طور پر موصول ہونے والی متوقع قدر درست ہونی چاہیے۔

  • assertFalse(<boolean>) - دلیل کے طور پر موصول ہونے والی متوقع قدر غلط ہونی چاہیے۔

  • assertNotEquals(<object1>, <object2>) - استدلال کے طور پر موصول ہونے والی اشیاء کو برابر استعمال کرتے ہوئے موازنہ کرتے وقت مختلف ہونا چاہیے ( غلط )

  • assertThrows(<ClassNameOfException>.class, <exceptionObject>) - دوسری دلیل پہلی دلیل کے ذریعہ متعین کردہ کلاس کا استثناء ہونے کی توقع کی جاتی ہے (یعنی، ایک اصول کے طور پر، دوسری دلیل کی جگہ، ایک طریقہ کہا جاتا ہے جسے مطلوبہ قسم کی رعایت پھینک دیں)

تار

57. جاوا میں اسٹرنگ کی خصوصیت

سٹرنگ جاوا میں ایک معیاری کلاس ہے، جو سٹرنگ کی قدروں (حروف کی ترتیب) کو ذخیرہ کرنے اور ان میں ہیرا پھیری کرنے کے لیے ذمہ دار ہے، ایک ناقابل تغیر کلاس ہے ( میں نے پہلے بھی ناقابل تغیر کے بارے میں لکھا تھا )، یعنی اس کلاس کی اشیاء کے ڈیٹا کو تخلیق کے بعد تبدیل نہیں کیا جا سکتا۔ میں فوری طور پر نوٹ کرنا چاہوں گا کہ StringBuilder اور StringBuffer کلاسز دو عملی طور پر ایک جیسی کلاسیں ہیں جس میں فرق صرف اتنا ہے کہ ان میں سے ایک کا مقصد ملٹی تھریڈڈ ماحول (StringBuffer) میں استعمال کرنا ہے۔ یہ کلاسز String کے مشابہ ہیں ، لیکن اس کے برعکس، یہ متغیر ہیں ۔ یعنی آبجیکٹ، ایک بار بننے کے بعد، اس سٹرنگ میں ترمیم کی اجازت دیتے ہیں جس کی وہ نمائندگی کرتے ہیں بغیر کوئی نئی آبجیکٹ بنائے۔ دراصل، طریقے معیاری String طریقوں سے مختلف ہیں اور اس کا مقصد سٹرنگ کو تبدیل کرنے کی ضروریات کو پورا کرنا ہے (یہ کچھ بھی نہیں ہے کہ انہیں بلڈر کہا جاتا ہے)۔ اس مضمون میں String ، StringBuffer اور StringBuilder کے بارے میں مزید پڑھیں ۔

58. String آبجیکٹ بنانے کے مختلف طریقے کیا ہیں؟ یہ کہاں پیدا ہوا ہے؟

سٹرنگ بنانے کا سب سے عام طریقہ یہ ہے کہ اس قدر کی وضاحت کریں جس کی ہمیں ڈبل بریکٹ میں ضرورت ہے:
String str = "Hello World!";
آپ یہ براہ راست new کے ذریعے بھی کر سکتے ہیں :
String str = new String("Hello World!");
آپ حروف کی ایک صف سے شروع ہونے والی ایک تار بنا سکتے ہیں:
char[] charArr = {'H','e','l','l','o',' ', 'W','o','r','l','d','!'};
String str = new String(charArr);
کسی چیز پر چلنے والے toString طریقہ کے نتیجے میں :
String str = someObject.toString();
کسی دوسرے طریقہ کے نتیجے کی طرح، یہ سٹرنگ کی نمائندگی لوٹاتا ہے۔ مثال کے طور پر:
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
String str =  reader.readLine();
جیسا کہ آپ سمجھتے ہیں، سٹرنگ بنانے کے بہت، بہت سارے طریقے ہو سکتے ہیں۔ جب کوئی String آبجیکٹ بنتا ہے، تو اسے سٹرنگ پول میں محفوظ کیا جاتا ہے ، جس کے بارے میں ہم ذیل میں سے ایک سوال میں مزید تفصیل سے بات کریں گے۔

59. جاوا میں دو تاروں کا موازنہ کیسے کریں اور انہیں کیسے ترتیب دیا جائے؟

جاوا اقدار کا موازنہ کرنے کے لیے ڈبل مساوی نشان == استعمال کرتا ہے ۔ اگر ہمیں کچھ آسان اقدار جیسے int کا موازنہ کرنے کی ضرورت ہو تو ہم اسے استعمال کریں گے۔ لیکن یہ طریقہ مکمل اشیاء کا موازنہ کرنے کے لیے لاگو نہیں ہے۔ اس صورت میں، یہ صرف حوالہ جات کا موازنہ ہوگا - چاہے وہ ایک ہی چیز کی طرف اشارہ کریں یا نہ کریں۔ یعنی، جب دو آبجیکٹ کا اندرونی فیلڈز کی بالکل یکساں قدروں کے ساتھ موازنہ کریں تو == کے ذریعے موازنہ کرنے سے نتیجہ غلط نکلے گا : اشیاء کے ایک جیسے فیلڈز کے باوجود، اشیاء خود مختلف میموری سیلز پر قابض ہیں۔ اور String کلاس کی اشیاء ، ان کی فریب آمیز سادگی کے باوجود، اب بھی اشیاء ہیں۔ اور == کے ذریعے موازنہ بھی ان پر لاگو نہیں ہے (یہاں تک کہ سٹرنگ پول کی موجودگی کے باوجود)۔ یہاں آبجیکٹ کلاس کا معیاری طریقہ کار میں آتا ہے - equals ، جس کو کلاس میں درست طریقے سے کام کرنے کے لیے اوور رائیڈ ہونا ضروری ہے (بصورت دیگر، ڈیفالٹ کے طور پر یہ استعمال کرتے ہوئے موازنہ کرتا ہے ==اسے String کلاس میں اوور رائیڈ کر دیا گیا ہے ، لہذا ہم اسے لے کر استعمال کرتے ہیں:
String firstStr = "Hello World!";
String secondStr = "Hello World!";
boolean isEquals = firstStr.equals(secondStr);
Разбор вопросов и ответов с собеседований на Java-разработчика. Часть 6 - 6ہم نے مماثل موازنہ کے بارے میں بات کی، اب ہم موازنہ کو چھانٹتے ہوئے دیکھتے ہیں۔ آخر کار، کسی چیز کو ترتیب دینے کے لیے ہمیں یہ جاننے کی ضرورت ہے کہ کس اصول کے مطابق چھانٹنا ہے۔ ایسا کرنے کے لیے، آپ ایک معیاری ترتیب شدہ سیٹ - TreeSet استعمال کر سکتے ہیں ۔ آپ اس مضمون میں جاوا میں مختلف مجموعوں کے بارے میں مزید پڑھ سکتے ہیں ۔ یہ فہرست سرخ-سیاہ درخت کے الگورتھم کی بنیاد پر کام کرتی ہے اور ترتیب کے مخصوص اصول کے مطابق سیٹ کو ترتیب دیتی ہے۔ جیسا کہ میں نے پہلے کہا، آپ کو یہ سمجھنے کی ضرورت ہے کہ کسی خاص قسم کی اشیاء کو کیسے ترتیب دیا جائے۔ موازنہ کرنے والوں کو چھانٹنے کے لیے موازنہ کا طریقہ مقرر کرنے کے لیے استعمال کیا جاتا ہے ۔ عام طور پر ان کو ان کلاسوں کے لیے لاگو کرنے کی ضرورت ہوتی ہے جن کو آپ ترتیب دینا چاہتے ہیں، لیکن String کے معاملے میں وہ پہلے ہی لاگو ہو چکے ہیں۔ لہذا، ہم صرف ان قطاروں کو شامل کرتے ہیں جن کی ہمیں ضرورت ہے TreeSet ، اور یہ انہیں ترتیب دے گا:
TreeSet<String> sortedSet = new TreeSet<>();
sortedSet.add("B");
sortedSet.add("C");
sortedSet.add("A");
sortedSet.forEach(System.out::println);
کنسول آؤٹ پٹ:
اے بی سی

60. سٹرنگ کو کریکٹر میں تبدیل کرنے کے لیے الگورتھم دیں۔ مناسب کوڈ لکھیں۔

جیسا کہ میں نے پہلے کہا، String کلاس کی اشیاء میں بہت سے مختلف مفید طریقے ہیں۔ ان میں سے ایک ہے toCharArray ۔ یہ طریقہ سٹرنگ کو کریکٹر صف میں تبدیل کرتا ہے:
String str = "Hello world";
char[] charArr = str.toCharArray();
اگلا ہمارے پاس حروف کی ایک صف ہے جسے ہم انڈیکس کے ذریعہ کال کرسکتے ہیں:
char firstChar = charArr[0]; // H

61. سٹرنگ کو بائٹ اری اور بیک میں کیسے تبدیل کیا جائے؟ مناسب کوڈ لکھیں۔

toCharArray طریقہ کی طرح ، String کلاس میں getBytes طریقہ ہے جو سٹرنگ کی بائٹ سرنی واپس کرتا ہے:
String str = "Hello world";
byte[] byteArr = str.getBytes();
byte firstChar = byteArr[6]; // 119
تجزیہ کا آج کا حصہ اپنے منطقی انجام کو پہنچ چکا ہے۔ آپکی توجہ کا شکریہ!Разбор вопросов и ответов с собеседований на Java-разработчика. Часть 6 - 7
سیریز میں دیگر مواد:
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION