جاوا میں ارے لسٹ اور ویکٹر کے مابین فرق

مصنف: Laura McKinney
تخلیق کی تاریخ: 1 اپریل 2021
تازہ کاری کی تاریخ: 1 مئی 2024
Anonim
14.4 جاوا میں ویکٹر بمقابلہ اری لسٹ
ویڈیو: 14.4 جاوا میں ویکٹر بمقابلہ اری لسٹ

مواد


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

آئیے ذیل میں دکھائے گئے موازنہ چارٹ کی مدد سے کچھ دوسرے اختلافات کا مطالعہ کریں۔

  1. موازنہ چارٹ
  2. تعریف
  3. کلیدی اختلافات
  4. مماثلت
  5. نتیجہ اخذ کرنا

موازنہ چارٹ

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


ارا لسٹ کی تعریف

ارا لسٹ معیاری جمع کرنے والی کلاسوں کی فہرست سے تعلق رکھتی ہے۔ کلاس ارا لسٹ کے اندر تعریف کی گئی ہے java.util پیکیج ، یہ توسیع خلاصہ کی فہرست کلاس جو ایک معیاری جمع کرنے کی کلاس بھی ہے ، اور یہ بھی نافذ کرتی ہے فہرست، جمع انٹرفیس میں تعریف کردہ ایک انٹرفیس۔ جاوا میں ، ایک معیاری سرنی ہمیشہ مقررہ لمبائی کی ہوتی ہے۔ اس کا مطلب ہے ایک بار پیدا؛ یہ متحرک طور پر بڑھتا یا سائز میں سکڑ نہیں ہوتا ہے۔ لہذا ، آپ جو سرنی استعمال کر رہے ہیں اس کی لمبائی کے بارے میں آپ کو پہلے سے علم ہونا چاہئے۔ لیکن ، کبھی کبھی ایسا بھی ہوسکتا ہے کہ رن ٹائم پر مطلوبہ لمبائی کا انکشاف ہوا ہو ، اس طرح کی صورتحال کو روکنے کے لئے جاوا نے ارا لسٹ کو متعارف کرایا۔

ارای لسٹ ایک ایسی صف کی متحرک تخلیق کے لئے استعمال ہونے والی کلاس ہے جو آبجیکٹ کے حوالہ جات رکھتی ہے۔ جب یہ ضرورت ہو تو اس صف میں سائز میں اضافہ ہوسکتا ہے۔ کلاس اعلامیہ مندرجہ ذیل ہے:

کلاس ارا لسٹ

یہاں ، ای اشیاء کی قسم کی وضاحت کرتا ہے جو ایک صف میں پکڑے جائیں گے۔ جو صف تیار کی گئی ہے وہ متغیر لمبائی کی ہوتی ہے ، اور جب چیزوں کو فہرست سے خارج یا خارج کردیا جاتا ہے تو اس کی مقدار میں اضافہ اور کمی واقع ہوتی ہے۔


ارا لسٹ ہم وقت ساز نہیں ہے جس کا مطلب ہے ، ایک ہی وقت میں ایک سے زیادہ تھریڈ سرنی پر چل سکتی ہیں۔ مثال کے طور پر ، اگر ایک تھریڈ سرے میں کسی آبجیکٹ کا حوالہ جوڑ رہا ہے اور دوسرا تھریڈ ایک ہی وقت میں ایک ہی صف سے آبجیکٹ ریفرنس کو ہٹا رہا ہے۔ ارا لسٹ کلاس کا استعمال کرتے ہوئے متحرک صف کی تخلیق:

ارے لسٹ S1 = نئی ارا لسٹ()؛ System.out.ln ("S1 کا ابتدائی سائز:" + S1.size ())؛ S1.add ("T")؛ S1.add ("C")؛ S1.add ("H")؛ ایس ون ایڈ (1 ، "ای")؛ System.out.ln ("اضافے کے بعد S1 پر مشتمل ہے:" + S1)؛ System.out.ln ("اضافے کے بعد S1 کا سائز:" + S1.size ())؛ S1.remove ("T")؛ S1.remove (2)؛ System.out.ln ("حذف کرنے کے بعد S1 پر مشتمل ہے:" + S1)؛ System.out.ln ("حذف ہونے کے بعد S1 کا سائز:" + S1.size ())؛ // آؤٹ پٹ S1 کا سائز: 0 اضافے کے بعد S1 پر مشتمل ہے:؛ اضافے کے بعد S1 کا سائز: 4 حذف کرنے کے بعد S1 پر مشتمل ہے: خارج کرنے کے بعد S1 کا سائز: 2

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

ویکٹر کی تعریف

ویکٹر ایک لیگیسی کلاس ہے جس کو کلیکشن فریم ورک درجہ بندی میں کلیکشن کلاس کی حمایت کے لئے دوبارہ تیار کیا گیا ہے۔ ویکٹر کلاس میں بھی تعریف کی گئی ہے java.util پیکیج ، کی طرف سے توسیع خلاصہ کی فہرست کلاس اور کے ذریعے لاگو فہرست انٹرفیس. ویکٹر کلاس کو بطور پیروکار اعلان کیا گیا ہے:

کلاس ویکٹر

یہاں ، ای شے کی قسم کی وضاحت کرتا ہے جو ایک صف میں محفوظ ہوگا۔ ویکٹر کلاس کا استعمال کرتے ہوئے تخلیق کردہ ایک صف متغیر کی لمبائی کی ہے۔ اگر انکریمنٹ کی وضاحت نہیں کی گئی ہے تو یہ اس کے سائز میں دوگنا اضافہ کرتا ہے۔ آئیے ویکٹر کا استعمال کرکے صف کی تشکیل کو سمجھیں۔

ویکٹر وی = نیا ویکٹر(1،1)؛ V.addElement ("ٹیک")؛ V.addElement ("اختلافات")؛ System.out.ln ("2 اضافے کے بعد کی اہلیت:" + V.capacity ())؛ V.addElement ("درمیان")؛ V.addElement ("ویکٹر")؛ System.out.ln ("موجودہ صلاحیت:" + V.capacity ())؛ // 2 اضافے کے بعد آؤٹ پٹ کی اہلیت: 2 موجودہ صلاحیت: 4

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

  1. متعدد تھریڈز ایک ہی وقت میں ارے لسٹ پر کام کرسکتے ہیں لہذا اس پر غور کیا جاتا ہے غیر تسلیم شدہ. ارا لسٹ کے برعکس ، ایک وقت میں صرف ایک ہی دھاگا ویکٹر پر چل سکتا ہے۔ لہذا اسے کہا جاتا ہے ہم وقت ساز.
  2. جاوا کے ابتدائی ورژن میں ، کچھ کلاسز اور انٹرفیس ان چیزوں کو محفوظ کرنے کے طریقے مہیا کریں گے جن کو وہ لیگیسی کلاس کہتے ہیں جاوا کے لیگیسی کلاس میں ویکٹر ایک ہے۔ بعد میں ، ان میراثی کلاسوں کو کلیکشن کلاس کی تائید کے لئے نئے سرے سے تشکیل دیا گیا جبکہ ارا لسٹ کلاس ایک معیاری کلیکشن کلاس ہے۔
  3. جب کسی صف کی حد کو مکمل طور پر استعمال کیا جاتا ہے اور ختم شدہ سرنی کے ساتھ ہی ایک نئی چیز شامل کردی جاتی ہے تو ، اس کا سائز دونوں صورتوں میں بڑھتا ہے یعنی ارا لسٹ میں اور ساتھ ہی ویکٹر میں بھی ، لیکن فرق یہ ہے کہ ارا لسٹ میں ، اگر سائز کی وضاحت نہیں کی گئی ہے موجودہ صفوں میں 50٪ اضافہ کیا گیا ہے جب کہ ، اگر انکریمنٹ ویلیو کی وضاحت نہیں کی گئی ہے تو ویکٹر صف میں سائز میں دگنی ہوجاتی ہے۔
  4. ویکٹر ایک صف کو عبور کرنے کے لئے گنتی کے ساتھ ساتھ Iterator کا بھی استعمال کرتا ہے جبکہ ، ایک ArrayList صرف ایک سرنی کو عبور کرنے کے لئے تکرار کا استعمال کرتا ہے۔
  5. چونکہ ارا لسٹ غیر مطابقت پذیر ہے اور بہت سارے دھاگے اسی وقت کام کر سکتے ہیں اس کی کارکردگی ویکٹر سے بہتر ہے جس پر ایک وقت میں صرف ایک ہی دھاگہ چل سکتا ہے۔

مماثلت:

  1. ارے لسٹ اور ویکٹر دونوں کی وضاحت java.util پیکیج میں کی گئی ہے۔
  2. ارای لسٹ اور ویکٹر دونوں AbsractList کلاس میں توسیع کرتے ہیں۔
  3. ارا لسٹ اور ویکٹر دونوں لسٹ انٹرفیس کو نافذ کرتے ہیں۔
  4. ارے لسٹ اور ویکٹرز دونوں ایک متحرک صف تیار کرنے کے لئے استعمال ہوتے ہیں جو ضرورت کے مطابق بڑھتا ہے۔
  5. ارے لسٹ اور ویکٹر دونوں اعتراض کا حوالہ رکھتے ہیں۔

نتیجہ:

میں یہ کہہ کر یہ نتیجہ اخذ کرتا ہوں کہ ارا لسٹ کا استعمال ویکٹر کے استعمال سے بہتر ہے کیونکہ یہ تیز اور بہتر کارکردگی کا مظاہرہ کرتا ہے۔