CodeGym /جاوا بلاگ /Random-UR /جاوا ڈویلپر کی پوزیشن کے لیے نوکری کے انٹرویو سے سوالات ا...
John Squirrels
سطح
San Francisco

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

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

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

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

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

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

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

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

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

  • ALL — ایک ساتھ تین کاسکیڈنگ آپریشنز پر مشتمل ہے — PERSISTضم کریں ہٹائیں

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

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

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

  • SAVE_UPDATE — کاسکیڈنگ سیو/ڈیلیٹ (ہائبرنیٹ کے saveOrUpdate طریقہ کے لیے)

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

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

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

جے پی اے کی تصریح کے 2.1 دی اینٹیٹی کلاس کے مطابق ، " خلاصہ اور ٹھوس دونوں کلاسیں ہستی ہو سکتی ہیں۔ " تو، جواب ہاں میں ہے، ایک تجریدی کلاس ایک ہستی ہو سکتی ہے اور اسے @Entity تشریح کے ساتھ نشان زد کیا جا سکتا ہے۔

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

سب سے پہلے، میں یہ نوٹ کرنا چاہوں گا کہ EntityManager JPA کا ایک اہم جزو ہے ۔ یہ ڈیٹا بیس کے ساتھ اداروں کے تعامل کے لیے استعمال ہوتا ہے۔ عام طور پر، ڈیٹا بیس کے ساتھ ہستی کے تعامل کے طریقوں کو ہستی پر بلایا جاتا ہے (مسلسل ہونا، ضم کرنا، ہٹانا، الگ کرنا)... لیکن میں یہ بھی نوٹ کرتا ہوں کہ یہ جزو عام طور پر پوری ایپلیکیشن کے لیے واحد نہیں ہوتا ہے۔ یہ اکثر ہلکا ہوتا ہے، ایک کو حذف کر دیا جاتا ہے، اور EntityManagerFactory کا استعمال کرتے ہوئے ایک نیا بنایا جاتا ہے ۔ اگر ہم JDBC کے ساتھ متوازی بنائیں ، جہاں EntityManagerFactory DataSource کے مشابہ ہے ، تو EntityManager کنکشن کے مشابہ ہے ۔ اس سے پہلے، میں نے ذکر کیا تھا کہ ایک مستقل وجود ایک ایسی ہستی ہے جو موجودہ کنکشن کے ذریعے منظم ہوتی ہے۔ اس ادارے کا انتظام EntityManager کے ذریعے کیا جاتا ہے ، جو موجودہ کنکشن سے قریبی تعلق رکھتا ہے، اور TransactionManager ، جو کہ لین دین کو کھولنے/ بند کرنے کا ذمہ دار ہے۔ نیچے دی گئی تصویر میں، آپ ہستی کا لائف سائیکل دیکھ سکتے ہیں: جاوا ڈویلپر کی پوزیشن کے لیے نوکری کے انٹرویو سے سوالات اور جوابات تلاش کرنا۔  حصہ 6 - 5EntityManager ہستی کا انتظام اس وقت کرتا ہے جب یہ نظم شدہ مرحلے میں ہوتا ہے (جب یہ مستقل ہوتا ہے، کیونکہ اس کا EntityManager سے تعلق ہوتا ہے )۔ یعنی یہ نیا نہیں ہے اور ہٹایا بھی نہیں۔ جب کوئی ہستی نئی ہوتی ہے یا ہٹا دی جاتی ہے، تو ہم کہہ سکتے ہیں کہ یہ الگ بھی ہے، کیونکہ EntityManager اس کا انتظام نہیں کرتا ہے۔ EntityManager کے لیے مختلف حکمت عملی ہیں ۔ آپ پوری ایپلیکیشن کے لیے EntityManager سنگلٹن رکھ سکتے ہیں یا ہر کنکشن کے لیے ہر بار ایک نیا بنا سکتے ہیں۔ اگر آپ Spring استعمال کر رہے ہیں، تو EntityManager کی تخلیق/حذف کرنے کا انتظام خود بخود ہوڈ کے نیچے ہو جاتا ہے (لیکن اس کا مطلب یہ نہیں ہے کہ آپ اسے اپنی مرضی کے مطابق نہیں بنا سکتے ^^)۔ مجھے یہ بتانے کی ضرورت ہے کہ ایک یا زیادہ EntityManagers ایک مستقل سیاق و سباق تشکیل دیتے ہیں ۔ استقامت کا سیاق و سباق ایک ایسا ماحول ہے جس میں ہستیوں کی مثالیں ڈیٹا بیس میں ملتے جلتے اداروں کے ساتھ ہم آہنگ ہوتی ہیں (جیسا کہ میں نے کہا، یہ صرف مستقل اداروں کے لیے کام کرتا ہے)۔ اگر آپ JPA (جس کی میں بہت زیادہ سفارش کرتا ہوں) کے بارے میں گہرائی میں غور کریں تو آپ کو اکثر اس تصور کا سامنا کرنا پڑے گا۔

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

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

  • assertFalse(<boolean>) — دلیل کے طور پر پاس کی گئی قدر کے غلط ہونے کی توقع ہے۔

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

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

تار

57. جاوا کی سٹرنگ کلاس کی وضاحت کریں۔

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

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. آپ جاوا کے دو تاروں کا موازنہ کیسے کرتے ہیں، اور آپ انہیں کیسے ترتیب دیتے ہیں؟

جاوا موازنہ کرنے کے لیے ڈبل مساوی نشان ( == ) استعمال کرتا ہے۔ اگر ہمیں ints جیسی سادہ اقدار کا موازنہ کرنے کی ضرورت ہے تو ہم اسے استعمال کریں گے۔ لیکن یہ طریقہ مکمل اشیاء کا موازنہ کرنے کے لیے موزوں نہیں ہے۔ یہ صرف حوالہ جات کا موازنہ کرے گا، یعنی آیا حوالہ جات ایک ہی چیز کی طرف اشارہ کرتے ہیں یا نہیں۔ اس کا مطلب یہ ہے کہ اگر ہم ایک ہی فیلڈ ویلیوز کے ساتھ دو آبجیکٹ کا موازنہ کریں == استعمال کرتے ہوئے، ہمیں غلط ملے گا ۔ فیلڈز کی قدریں ایک جیسی ہیں، لیکن آبجیکٹ خود میموری میں مختلف مقامات پر قابض ہیں۔ سٹرنگ آبجیکٹ، اپنی فریب آمیز سادگی کے باوجود، اب بھی اشیاء ہیں۔ == کا استعمال کرتے ہوئے ان کا موازنہ کرنا بھی مناسب نہیں ہے (سٹرنگ پول کی موجودگی کے باوجود)۔ مناسب حل آبجیکٹ کلاس کا معیاری مساوی طریقہ ہے، جسے صحیح طریقے سے کام کرنے کے لیے اوور رائڈ کرنے کی ضرورت ہے (بطور ڈیفالٹ، یہ موازنہ کے لیے == استعمال کرتا ہے)۔ اسٹرنگ کلاس اسے اوور رائیڈ کرتی ہے، لہذا ہم صرف اس کے نفاذ کا استعمال کرتے ہیں :
String firstStr = "Hello World!";
String secondStr = "Hello World!";
boolean isEquals = firstStr.equals(secondStr);
جاوا ڈویلپر کی پوزیشن کے لیے نوکری کے انٹرویو سے سوالات اور جوابات تلاش کرنا۔  حصہ 6 - 6ہم نے مساوات کے لیے موازنہ کے بارے میں بات کی ہے۔ اب ہم چھانٹنے کے لیے موازنہ نکالیں گے۔ سب کے بعد، اگر ہم کسی چیز کو ترتیب دینے جا رہے ہیں، تو ہمیں یہ جاننے کی ضرورت ہے کہ ہم ترتیب دینے کے لیے کون سا اصول استعمال کریں گے۔ ایسا کرنے کے لیے، آپ TreeSet ، ایک معیاری ترتیب شدہ سیٹ استعمال کر سکتے ہیں۔ یہ ڈیٹا ڈھانچہ سرخ-سیاہ درخت الگورتھم پر انحصار کرتا ہے اور ایک مخصوص ترتیب کے اصول کے مطابق سیٹ کو ترتیب دیتا ہے۔ جیسا کہ میں نے پہلے کہا، آپ کو یہ سمجھنے کی ضرورت ہے کہ کسی خاص قسم کی اشیاء کو کیسے ترتیب دیا جائے۔ چھانٹنے کے لیے موازنہ کا طریقہ تفویض کرنے کے لیے، comparators استعمال کریں ۔ آپ کو عام طور پر ان کلاسوں کے لیے لاگو کرنے کی ضرورت ہوتی ہے جنہیں آپ چھانٹنا چاہتے ہیں، لیکن 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. آپ سٹرنگ کو بائٹ اری اور بیک میں کیسے تبدیل کرتے ہیں؟ متعلقہ کوڈ لکھیں۔

String کلاس میں getBytes کا طریقہ ہے، جو toCharArray طریقہ سے ملتا جلتا ہے اور سٹرنگ کو بائٹ سرنی کے طور پر لوٹاتا ہے:
String str = "Hello world";
byte[] byteArr = str.getBytes();
byte firstChar = byteArr[6]; // 119
ہم آج اپنے جائزے کے منطقی نتیجے پر پہنچے ہیں۔ پڑھنے کا شکریہ!
مزید پڑھ:
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION