ما هو Vector في Java وكيف نستخدمه؟



ستساعدك هذه المدونة الموجودة على 'المتجهات في Java' على فهم كيفية اختلاف فئة المتجهات عن ArrayList وتساعدك على التعرف على الطرق المختلفة المستخدمة.

نواقل في هي إحدى هياكل البيانات الأكثر استخدامًا في عالم البرمجة.نحن كلنا نعلم ذلك المصفوفات هي هياكل البيانات التي تحتفظ بالبيانات بطريقة خطية. تقوم المتجهات أيضًا بتخزين البيانات بطريقة خطية ، ولكن على عكس المصفوفات ، ليس لها حجم ثابت. بدلاً من ذلك ، يمكن زيادة حجمها عند الطلب.

فئة المتجه هي فئة تابعة لـ قائمة الخلاصة فئة وتنفذ قائمة .لاستخدام المتجهات ، علينا أولاً استيراد فئة Vector من حزمة java.util:





استيراد java.util.Vector

في هذه المقالة ، سنناقش المفاهيم التالية للناقلات:



هيا بنا نبدأ!

ضبط نوافذ java classpath 10

مميزات من Vector في Java

  • تعتبر خاصية وجود حجم ديناميكي مفيدة للغاية لأنها تتجنب إهدار الذاكرة في حالة عدم معرفتنا بحجم هيكل البيانات في وقت الإعلان.
  • عندما نريد تغيير حجم هيكل البيانات الخاص بنا في منتصف البرنامج ، يمكن أن تكون المتجهات مفيدة للغاية.

إن خاصية وجود حجم ديناميكي ليست فريدة بالنسبة إلى المتجهات في Java. تُظهر بنية بيانات أخرى ، تُعرف باسم ArrayList ، أيضًا خاصية وجود حجم ديناميكي. ومع ذلك ، تختلف المتجهات عن ArrayLists لسببين:

  • أولاً ، تتم مزامنة المتجهات مما يمنحها ميزة مقارنة ب البرامج حيث توجد مخاطر تلف البيانات.
  • ثانيًا ، تحتوي المتجهات على بعض الوظائف القديمة التي يمكن تنفيذها فقط على المتجهات وليس على قوائم ArrayLists.

كيفية الوصول إلى العناصر في Vector

يمكننا الوصول إلى أعضاء البيانات ببساطة عن طريق استخدام فهرس العنصر ، تمامًا كما نصل إلى العناصر في المصفوفات.



مثال- إذا أردنا الوصول إلى العنصر الثالث في المتجه v ، فإننا نشير إليه ببساطة على أنه v [3].

ناقلات البناة

المدرجة أدناه هي الاختلافات المتعددة للمتجه الصانعين متاحة للاستخدام:

  1. المتجه (int initialCapacity ، زيادة int) - تنشئ متجهًا بقدرة أولية معينة وزيادة حجمها.
  2. المتجه (سعة أولية int) - تُنشئ متجهًا فارغًا بقدرة أولية محددة. في هذه الحالة ، الزيادة تساوي صفرًا.
  3. المتجه() - ينشئ متجهًا افتراضيًا للقدرة 10.
  4. ناقلات (جمع ج) - لإنشاء متجه بمجموعة معينة ، يكون ترتيب العناصر هو نفسه الذي يتم إرجاعه بواسطة مكرر المجموعة.

هناك أيضًا ثلاث معلمات محمية في النواقل

  1. زيادة السعة () - يقوم تلقائيًا بزيادة سعة المتجه عندما يصبح الحجم أكبر من السعة.
  2. Int elementCount () - قل عدد العناصر في المتجه
  3. كائن [] elementData () - مجموعة يتم فيها تخزين عناصر المتجه

الأخطاء الأكثر شيوعًا في إعلان المتجهات

  • يرمي المتجه ملف غير الشرعيين استثناء حجة إذا كان الحجم الأولي للمتجه المحدد سالبًا.
  • إذا كانت المجموعة المحددة فارغة ، فسيتم طرحها NullPointerException

ملحوظة:

  1. إذا لم يتم تحديد زيادة المتجه ، فستكون السعةتضاعف في كل دورة زيادة.
  2. لا يمكن أن تكون سعة المتجه أقل من الحجم ، فقد تكون مساوية له.

لنأخذ مثالاً على تهيئة Vectors Constructors.

مثال: تهيئة Vector Constructors

/ كود Java يوضح Vector Constructors يستورد java.util. * public class Main {public static void main (String [] args) {// create default vector v1 = new Vector () // أنشئ متجهًا لحجم Vector v2 = Vector الجديد (20) // أنشئ متجهًا معطى حجم وزيادة Vector v3 = Vector جديد (30،10) v2.add (100) v2.add (100) v2.add (100) // أنشئ متجهًا معطى مجموعة Vector v4 = Vector (v2) System.out.println ('Vector v1 للسعة' + v1.capacity ()) System.out.println ('Vector v2 of Capacity' + v2.capacity ()) System.out .println ('المتجه v3 للسعة' + v3.capacity ()) System.out.println ('Vector v4 من السعة' + v4.capacity ())}

انتاج |

بناة - ناقلات في جافا - Edureka

تخصيص الذاكرة من النواقل

حتى الآن ، يجب أن تكون قد فهمت أن المتجهات ليس لها حجم ثابت ، وبدلاً من ذلك ، لديها القدرة على تغيير حجمها ديناميكيًا. قد يعتقد المرء أن المتجهات تخصص مساحة طويلة غير محددة لتخزين الأشياء. ولكن هذا ليس هو الحال. يمكن للناقلات تغيير حجمها بناءً على حقلين 'سعة' و 'سعة'. في البداية ، يتم تخصيص حجم يساوي حقل 'السعة' عند الإعلان عن متجه. يمكننا إدخال العناصر التي تساوي السعة. ولكن بمجرد إدراج العنصر التالي ، فإنه يزيد من حجم المصفوفة حسب الحجم 'CapacityIncrement'. وبالتالي ، فهي قادرة على تغيير حجمها ديناميكيًا.

ل المُنشئ الافتراضي ، تتضاعف السعة عندما تكون السعة ممتلئة ويتم إدخال عنصر جديد.

مثال - افترض أن لدينا متجهًا للقدرة الأولية 5 و السعة من 2. لذا فإن الحجم الأولي للمتجه هو 5 عناصر نقوم بإدخال 5 عناصر في هذا المتجه واحدًا تلو الآخر ، أي 1،2،3،4،5. عندما نحاول إدخال عنصر آخر في المتجه وهو 6 ، فإن حجم المتجه سيزداد بمقدار 2. ومن ثم فإن حجم المتجه الآن 7. لذا فإن المتجه يضبط حجمه بسهولة وفقًا للرقم. من العناصر.

نقطة أخرى مثيرة للاهتمام هي أنه على عكس المصفوفات ، لا تحتوي المتجهات على كائنات حقيقية ، ولكنها تحتوي فقط على إشارات إلى الكائنات. وبالتالي ، فإنه يسمح بتخزين كائنات من أنواع بيانات مختلفة في نفس المتجه.

الأساليب في Vector

دعونا نلقي نظرة على عدد قليل جدا من أساليب المتجهات المستخدمة بكثرة.

  • إضافة منطقية (كائن o) - يقوم بإلحاق عنصر في نهاية المتجه.
// كود جافا يظهر أسلوب الإضافة المنطقية () استيراد java.util. * فئة عامة رئيسية {عامة ثابتة باطلة رئيسية (سلسلة [] args) {Vector v = new Vector () // تقوم بإنشاء متجه افتراضي v.add (1 ) // يضيف 1 في نهاية القائمة v.add ('Java') // يضيف 'Java' في نهاية القائمة v.add ('is') // يضيف 'is' في نهاية list v.add ('Fun') // تضيف 'Fun' في نهاية القائمة System.out.println ('The vector is' + v)}}

انتاج |

  • إضافة باطلة (فهرس int ، عنصر E) - يضيف العنصر المحدد في الفهرس المحدد في المتجه
// كود جافا يظهر void add () method import java.util. * public class Main {public static void main (String [] args) {Vector v = new Vector () // تقوم بإنشاء متجه افتراضي v.add (0 ، 1) // يضيف 1 في الفهرس 0 v.add (1، 'Java') // يضيف 'Java' في الفهرس 1 v.add (2، 'is') // يضيف 'is' في الفهرس 2 v.add (3، 'Fun') // يضيف 'Fun' في الفهرس 3 v.add (4، '!!!') // يضيف 'Fun' في الفهرس 4 System.out.println (' المتجه هو '+ v)}}

انتاج |

  • إزالة منطقية (كائن o) - يزيل إزالة العنصر في الفهرس المحدد في المتجه
// Java code تظهر طريقة boolean remove () import java.util. * public class Main {public static void main (String [] args) {Vector v = new Vector () // تقوم بإنشاء متجه افتراضي v.add (1 ) // يضيف 1 في نهاية القائمة v.add ('Java') // يضيف 'Java' في نهاية القائمة v.add ('is') // يضيف 'is' في نهاية list v.add ('Fun') // تضيف 'Fun' في نهاية القائمة System.out.println ('Vector قبل الإزالة' + v) v.remove (1) System.out.println ('Vector بعد إزالة '+ v)}}

انتاج |

  • إزالة عنصر منطقي ( كائن الكائن) - يحذف العنصر باسمه obj (وليس برقم الفهرس)
// Java code تظهر removeElement () method import java.util. * public class Main {public static void main (String [] args) {Vector v = new Vector () // تقوم بإنشاء متجه افتراضي v.add (1) // يضيف 1 في نهاية القائمة v.add ('Java') // يضيف 'Java' في نهاية القائمة v.add ('is') // يضيف 'is' في نهاية القائمة v.add ('Fun') // يضيف 'Fun' في نهاية القائمة System.out.println ('Vector قبل الإزالة' + v) v.removeElement ('Java') System.out.println ('Vector بعد الإزالة '+ v)}}

انتاج |

  • الحجم الداخلي () - تقوم بإرجاع حجم المتجه.
// كود جافا يظهر الحجم () طريقة الاستيراد java.util. * فئة عامة رئيسية {عامة ثابتة باطلة رئيسية (سلسلة [] args) {Vector v = new Vector () // تقوم بإنشاء متجه افتراضي v.add (0، 1) // يضيف 1 في الفهرس 0 v.add (1، 'Java') // يضيف 'Java' في الفهرس 1 v.add (2، 'is') // يضيف 'is' في الفهرس 2 v.add (3، 'Fun') // يضيف 'Fun' في الفهرس 3 System.out.println ('حجم المتجه هو' + v.size ())}}

انتاج |

  • السعة الدولية () - تقوم بإرجاع قدرة المتجه
// Java code تظهر السعة () طريقة import java.util. * public class Main {public static void main (String [] args) {Vector v = new Vector () // تقوم بإنشاء متجه افتراضي v.add (0، 1) // يضيف 1 في الفهرس 0 v.add (1، 'Java') // يضيف 'Java' في الفهرس 1 v.add (2، 'is') // يضيف 'is' في الفهرس 2 v.add (3، 'Fun') // يضيف 'Fun' في الفهرس 3 System.out.println ('سعة المتجه هي' + v.capacity ())}}

انتاج |

  • الحصول على الكائن (فهرس int) - تقوم بإرجاع العنصر في الموضع المحدد في المتجه
// Java code تظهر get () method import java.util. * public class Main {public static void main (String [] args) {Vector v = new Vector () // تقوم بإنشاء متجه افتراضي v.add (1) // يضيف 1 في نهاية القائمة v.add ('Java') // يضيف 'Java' في نهاية القائمة v.add ('is') // يضيف 'is' في نهاية القائمة v.add ('Fun') // يضيف 'Fun' في نهاية القائمة System.out.println ('العنصر في الفهرس 1 هو' + v.get (1))}}

انتاج |

  • العنصر الأول () - تقوم بإرجاع العنصر الأول
// كود جافا يظهر firstElement () method import java.util. * public class Main {public static void main (String [] args) {Vector v = new Vector () // تقوم بإنشاء متجه افتراضي v.add (1) // يضيف 1 في نهاية القائمة v.add ('Java') // يضيف 'Java' في نهاية القائمة v.add ('is') // يضيف 'is' في نهاية القائمة v.add ('Fun') // يضيف 'Fun' في نهاية القائمة System.out.println ('العنصر الأول هو' + v.firstElement ())}}

انتاج |

  • كائن LastElement () - تقوم بإرجاع العنصر الأخير
// كود جافا يظهر lastElement () method import java.util. * public class Main {public static void main (String [] args) {Vector v = new Vector () // تقوم بإنشاء متجه افتراضي v.add (1) // يضيف 1 في نهاية القائمة v.add ('Java') // يضيف 'Java' في نهاية القائمة v.add ('is') // يضيف 'is' في نهاية القائمة v.add ('Fun') // يضيف 'Fun' في نهاية القائمة System.out.println ('العنصر الأخير هو' + v.lastElement ())}}

انتاج |

  • قيمة منطقية (كائن o) - يقارن المتجه مع الكائن المحدد من أجل المساواة. يعود صحيحًا إذا كانت جميع العناصر صحيحة في المؤشرات المقابلة
// كود جافا يظهر منطقيًا يساوي () طريقة استيراد java.util. * فئة عامة رئيسية {عامة ثابتة باطلة رئيسية (سلسلة [] args) {Vector v = new Vector () // تقوم بإنشاء متجه افتراضي Vector vcopy = new Vector () v.add (1) // يضيف 1 في نهاية القائمة v.add ('Java') // يضيف 'Java' في نهاية القائمة v.add ('is') // Adds ' هو 'في نهاية القائمة v.add (' Fun ') // يضيف' Fun 'في نهاية القائمة vcopy.add (0،1) // يضيف 1 في الفهرس 0 vcopy.add (1، 'Java') // يضيف 'Java' في الفهرس 1 vcopy.add (2، 'is') // يضيف 'is' في الفهرس 2 vcopy.add (3، 'Fun') // يضيف 'Fun' في الفهرس 3 vcopy.add (4، '!!!') // يضيف 'Fun' في الفهرس 4 إذا (v.equals (vcopy)) System.out.println ('كلا المتجهين متساويان') نظام آخر .out.println ('المتجهات ليست متساوية')}}

انتاج |

  • تقليم باطل () - تزيل هذه الطريقة السعة الزائدة وتحافظ على السعة لمجرد الاحتفاظ بالعناصر ، أي مساوية للحجم
// Java code تظهر trimToSize () method import java.util. * public class Main {public static void main (String [] args) {Vector v = new Vector () // تقوم بإنشاء متجه افتراضي v.add (0، 1) // يضيف 1 في الفهرس 0 v.add (1، 'Java') // يضيف 'Java' في الفهرس 1 v.add (2، 'is') // يضيف 'is' في الفهرس 2 v.add (3، 'Fun') // يضيف 'Fun' في الفهرس 3 System.out.println ('سعة المتجه هي' + v.capacity ()) v.trimToSize () System.out.println ( 'سعة المتجه' + v.capacity ())}}

انتاج |


طرق أخرى مهمة

الآن يجب أن تكون لديك فكرة جيدة عن كيفية التعامل مع النواقل. إذا كنت ترغب في استكشاف المزيد من طرق المتجهات ، فقم بإلقاء نظرة على الجدول أدناه.

اسم الطريقة وظيفة الطريقة

قيمة المنطقية فارغة ()

يتحقق ما إذا كانت العناصر موجودة أم لا

يحتوي منطقي على (كائن o)

تستخدم للتحقق من وجود عنصر معين ، على سبيل المثال o

فهرس int (كائن o)

تقوم بإرجاع فهرس العنصر o

مجموعة باطلة (int s، int e)

ما هو عامل تصفية السياق في اللوحة

يزيل العناصر من المتجه بدءًا من s وتنتهي بـ (e-1)

باطل واضح ()

يزيل كل العناصر

ضمان باطلالقدرة (int c)

يزيد من السعة بمقدار c

مجموعة باطلة

يحدد الحجم إلى s. إذا كان الحجم> الحجم ، يتم ملء السعة الإضافية بقيم خالية. إذا كان s

عنصر الكائن في (int a)

إرجاع العنصر الموجود في رقم الفهرس أ

مجموعة الكائن (int a ، Object o)

يستبدل العنصر الموجود في الفهرس a بالعنصر المحدد o

كائن [] toArray ()

إرجاع مصفوفة تحتوي على نفس العناصر مثل المتجه

استنساخ الكائن ()

يتم نسخ كائن المتجه

Boolean addAll (مجموعة c)

يضيف جميع عناصر المجموعة c إلى المتجه

إضافة الكل المنطقية (int a ، Collection c)

يُدرج جميع عناصر المجموعة ج إلى المتجه في الفهرس المحدد أ

Boolean retainAll (مجموعة ج)

يحتفظ بجميع العناصر الموجودة في المتجه الموجودة أيضًا في المجموعة ج

سرد القائمة الفرعية (int s، int e)

تُرجع العناصر ، ككائن قائمة ، بدءًا من s وتنتهي بـ (e-1) من المتجه.

نظرًا لأن كل شيء جيد ينتهي ، فإن مدونتنا على Vectors in . نأمل أن نكون قادرين على تغطية جميع جوانب متجهات جافا في هذه المدونة وأنك تمكنت من جمع بعض المعرفة بخصوص المتجهات.

تأكد من ممارسة أكبر قدر ممكن وإعادة تجربتك.

تفحص ال من Edureka ، وهي شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250000 متعلم راضٍ منتشرين في جميع أنحاء العالم. نحن هنا لمساعدتك في كل خطوة في رحلتك ، لكي تصبح بجانب أسئلة مقابلة جافا هذه ، توصلنا إلى منهج مصمم للطلاب والمهنيين الذين يريدون أن يصبحوا مطور جافا.

لديك سؤال لنا؟ يرجى ذكرها في قسم التعليقات في 'المتجهات في جافا' مقال وسنعاود الاتصال بك في أقرب وقت ممكن.