מהו וקטור ב- Java וכיצד אנו משתמשים בו?



בלוג זה בנושא 'וקטורים בג'אווה' יעזור לך להבין כיצד מחלקה וקטורית שונה מ- ArrayList ויעזור לך ללמוד על שיטות שונות המעורבות.

וקטורים ב הם אחד ממבני הנתונים הנפוצים ביותר בעולם התכנות.כולנו יודעים ש מערכים הם מבני נתונים המחזיקים את הנתונים בצורה לינארית. הווקטורים גם מאחסנים את הנתונים בצורה לינארית, אך בניגוד למערכים, אין להם גודל קבוע. במקום זאת, ניתן להגדיל את גודלם על פי דרישה.

שיעור וקטורי הוא כיתת ילדים של תקציר רשימה כיתה ויישומים על רשימה .כדי להשתמש בווקטורים, ראשית עלינו לייבא מחלקה וקטורית מחבילה java.util:





ייבא java.util.Vector

במאמר זה נדון במושגים הבאים של וקטורים:



בואו נתחיל!

יתרון s של וקטור ב- Java

  • המאפיין שיש גודל דינמי מאוד שימושי מכיוון שהוא נמנע מבזבוז הזיכרון למקרה שאיננו יודעים את גודל מבנה נתונים בזמן ההכרזה.
  • כאשר אנו רוצים לשנות את גודל מבנה הנתונים שלנו באמצע תוכנית, וקטורים יכולים להוכיח שהם מאוד שימושיים.

המאפיין שיש גודל דינמי אינו ייחודי לווקטורים ב- Java. מבנה נתונים אחר, המכונה ArrayList מראה גם את המאפיין שיש לו גודל דינמי. עם זאת, וקטורים שונים מ- ArrayLists בגלל כמה סיבות:

  • ראשית, וקטורים מסונכרנים מה שמקנה לו יתרון על פני לעומת תוכניות שכן קיימים סיכונים לשחיתות נתונים.
  • שנית, לווקטורים יש כמה פונקציות מדור קודם שניתן ליישם רק בווקטורים ולא ב- ArrayLists.

כיצד לגשת לאלמנטים בווקטור

אנו יכולים לגשת לחברי הנתונים פשוט על ידי שימוש באינדקס של האלמנט, בדיוק כמו שאנחנו ניגשים לאלמנטים במערכים.



דוגמא- אם אנו רוצים לגשת לאלמנט השלישי בווקטור v, אנו פשוט מתייחסים אליו כאל v [3].

בונים וקטורים

להלן מספר הווריאציות של הווקטור בונים זמין לשימוש:

  1. וקטור (int initialCapacity, int Increment) - בונה וקטור עם קיבולת ראשונית נתונה וגידולו בגודל.
  2. וקטור (int initialCapacity) - בונה וקטור ריק עם קיבולת ראשונית נתונה. במקרה זה, תוספת היא אפס.
  3. וֶקטוֹר() - בונה וקטור ברירת מחדל בקיבולת 10.
  4. וקטור (אוסף ג) - בונה וקטור עם אוסף נתון, סדר האלמנטים זהה לזה שהוחזר על ידי איטרטור האוסף.

ישנם גם שלושה פרמטרים מוגנים בווקטורים

  1. קיבולת אינטנסיבית () - זה מגדיל באופן אוטומטי את קיבולת הווקטור כאשר הגודל הופך גדול מהקיבולת.
  2. ElementCount Int () - ספרו מספר אלמנטים בווקטור
  3. אובייקט [] elementData () - מערך בו מאוחסנים אלמנטים של וקטור

השגיאות הנפוצות ביותר בהצהרת וקטורים

  • וקטור זורק IllegalArgumentException אם גודל הראשוני של הווקטור שהוגדר הוא שלילי.
  • אם האוסף שצוין הוא אפס, הוא זורק NullPointerException

הערה:

  1. אם לא מוגדרת תוספת הווקטור, היכולת שלה תהיההוכפל בכל מחזור תוספת.
  2. הקיבולת של וקטור לא יכולה להיות מתחת לגודל, היא עשויה להיות שווה לו.

בואו ניקח בחשבון דוגמה לאתחול בוני וקטורים.

דוגמה: אתחול של קונסטרוקטורים וקטוריים

/ קוד Java הממחיש קונסטרוקטורים וקטוריים מייבא את java.util. * מחלקה ציבורית ראשי {ציבורי ריק סטטי ראשי (מחרוזת [] טענות) {// ליצור וקטור ברירת מחדל וקטור v1 = וקטור חדש () // ליצור וקטור בעל גודל נתון גודל וקטור v2 = וקטור חדש (20) // צור וקטור בגודל נתון וגודל וקטור v3 = וקטור חדש (30,10) v2.add (100) v2.add (100) v2.add (100) // צור וקטור עם נתון אוסף וקטור v4 = וקטור חדש (v2) System.out.println ('וקטור v1 של קיבולת' + v1.capacity ()) System.out.println ('וקטור v2 של קיבולת' + v2.capacity ()) System.out .println ('וקטור v3 של קיבולת' + v3.capacity ()) System.out.println ('וקטור v4 של קיבולת' + v4.capacity ())}

תְפוּקָה

קונסטרוקטורים - וקטורים בג

הקצאת זיכרון של וקטורים

עד כה, בוודאי הבנתם שלווקטורים אין גודל קבוע, במקום זאת, יש להם את היכולת לשנות את גודלם באופן דינמי. אפשר לחשוב שהווקטורים מקצים שטח ארוך ללא הגבלה לאחסון חפצים. אבל זה לא המקרה. וקטורים יכולים לשנות את גודלם על סמך שני שדות 'קיבולת' ו'קיבולתIncrement '. בתחילה מוקצה גודל השווה לשדה 'קיבולת' כאשר מכריזים על וקטור. אנו יכולים להכניס את האלמנטים השווים ליכולת. אך ברגע שהאלמנט הבא מוכנס, הוא מגדיל את גודל המערך לפי גודל 'capacityIncrement'. לפיכך, הוא מסוגל לשנות את גודלו באופן דינמי.

למשך קונסטרוקטור ברירת מחדל , הקיבולת מוכפלת בכל פעם שהקיבולת מלאה ויש להכניס אלמנט חדש.

דוגמא נניח שיש לנו וקטור של InitialCapacity 5 ו- קיבולת תוספת של 2. אז הגודל ההתחלתי של הווקטור הוא 5 אלמנטים אנו מכניסים 5 אלמנטים לווקטור זה אחד אחד, כלומר 1,2,3,4,5. כאשר אנו מנסים להכניס אלמנט נוסף לווקטור, כלומר 6, גודל הווקטור יוגדל ב -2. מכאן שגודל הווקטור הוא כעת 7. לכן הווקטור מכוון את גודלו בקלות על פי המס '. של אלמנטים.

נקודה מעניינת נוספת היא שבניגוד למערכים, הווקטורים אינם מכילים אובייקטים אמיתיים, אלא רק הפניות לאובייקטים. מכאן שהוא מאפשר לאחסן אובייקטים מסוגי נתונים שונים באותו וקטור.

שיטות בווקטור

בואו נסתכל על כמה שיטות וקטוריות הנפוצות ביותר.

  • תוספת בוליאנית (אובייקט o) - הוא מוסיף אלמנט בסוף הווקטור.
// קוד Java המציג שיטת add () בוליאנית ייבוא ​​java.util. * מחלקה ציבורית ראשי {public static void main (String [] args) {Vector v = New Vector () // זה יוצר וקטור ברירת מחדל v.add (1 ) // מוסיף 1 בסוף הרשימה v.add ('Java') // מוסיף 'Java' בסוף הרשימה v.add ('is') // מוסיף 'הוא' בסוף ה- רשימה v.add ('כיף') // מוסיף 'כיף' בסוף הרשימה System.out.println ('הווקטור הוא' + v)}}

תְפוּקָה

  • הוסף ריק (int אינדקס, אלמנט E) - זה מוסיף את האלמנט הנתון באינדקס שצוין בווקטור
// קוד Java המציג שיטת void add () ייבוא ​​java.util. * מחלקה ציבורית ראשי {ציבורי ריק ריק סטטי (מחרוזת [] טענות) {וקטור v = וקטור חדש () // זה יוצר וקטור ברירת מחדל v.add (0 , 1) // מוסיף 1 באינדקס 0 v.add (1, 'Java') // מוסיף 'Java' באינדקס 1 v.add (2, 'is') // Adds 'is' באינדקס 2 v.add (3, 'Fun') // מוסיף 'Fun' באינדקס 3 v.add (4, '!!!') // מוסיף 'Fun' באינדקס 4 System.out.println (' הווקטור הוא '+ v)}}

תְפוּקָה

  • הסר בוליאני (אובייקט o) - זה מסיר להסיר את האלמנט באינדקס הנתון בווקטור
// קוד Java המציג שיטה remove () בוליאנית ייבוא ​​java.util. * מחלקה ציבורית ראשי {public static void main (String [] args) {Vector v = new Vector () // זה יוצר וקטור ברירת מחדל v.add (1 ) // מוסיף 1 בסוף הרשימה v.add ('Java') // מוסיף 'Java' בסוף הרשימה v.add ('is') // מוסיף 'הוא' בסוף ה- רשימה v.add ('כיף') // מוסיף 'כיף' בסוף הרשימה System.out.println ('וקטור לפני הסרה' + v) v.remove (1) System.out.println ('וקטור אחרי הסרה '+ v)}}

תְפוּקָה

  • הסר בוליאני אובייקט אובייקט) - זה מוחק את האלמנט בשמו obj (לא לפי מספר האינדקס)
// קוד Java המציג שיטת removeElement () ייבוא ​​java.util. * מחלקה ציבורית ראשי {ציבורי ריק ריק סטטי (מחרוזת [] טענות) {וקטור v = וקטור חדש () // זה יוצר וקטור ברירת מחדל v.add (1) // מוסיף 1 בסוף הרשימה v.add ('Java') // מוסיף 'Java' בסוף הרשימה v.add ('is') // מוסיף 'הוא' בסוף הרשימה v.add ('כיף') // מוסיף 'כיף' בסוף הרשימה System.out.println ('וקטור לפני הסרה' + v) v.removeElement ('Java') System.out.println ('וקטור לאחר ההסרה '+ v)}}

תְפוּקָה

  • גודל Int () - הוא מחזיר את גודל הווקטור.
// קוד Java המציג שיטה בגודל () ייבוא ​​java.util. * מחלקה ציבורית ראשי {ציבורי ריק ריק סטטי (מחרוזת [] טענות) {וקטור v = וקטור חדש () // זה יוצר וקטור ברירת מחדל v.add (0, 1) // מוסיף 1 באינדקס 0 v.add (1, 'Java') // מוסיף 'Java' באינדקס 1 v.add (2, 'is') // מוסיף 'הוא' באינדקס 2 v.add (3, 'Fun') // מוסיף 'Fun' באינדקס 3 System.out.println ('גודל הווקטור הוא' + v.size ())}}

תְפוּקָה

  • קיבולת אינטנסיבית () - הוא מחזיר את קיבולת הווקטור
// קוד Java המציג שיטת קיבולת () ייבוא ​​java.util. * מחלקה ציבורית ראשי {ציבורי ריק ריק סטטי (מחרוזת [] ארגז) {וקטור v = וקטור חדש () // זה יוצר וקטור ברירת מחדל v.add (0 1) // מוסיף 1 באינדקס 0 v.add (1, 'Java') // מוסיף 'Java' באינדקס 1 v.add (2, 'is') // מוסיף 'הוא' באינדקס 2 v.add (3, 'Fun') // מוסיף 'Fun' באינדקס 3 System.out.println ('קיבולת הווקטור היא' + v.capacity ())}}

תְפוּקָה

  • אובייקט קבל (אינדקס int) - הוא מחזיר את האלמנט במיקום הנתון בווקטור
// קוד Java המציג שיטת get () ייבא java.util. * מחלקה ציבורית ראשי {public static void main (String [] args) {Vector v = new Vector () // זה יוצר וקטור ברירת מחדל v.add (1) // מוסיף 1 בסוף הרשימה v.add ('Java') // מוסיף 'Java' בסוף הרשימה v.add ('is') // מוסיף 'הוא' בסוף הרשימה v.add ('כיף') // מוסיף 'כיף' בסוף הרשימה System.out.println ('האלמנט באינדקס 1 הוא' + v.get (1))}}

תְפוּקָה

  • אובייקט firstElement () - זה מחזיר את האלמנט הראשון
// קוד Java המציג שיטת firstElement () ייבוא ​​java.util. * מחלקה ציבורית ראשי {ציבורי ריק ריק סטטי (מחרוזת [] טענות) {וקטור v = וקטור חדש () // זה יוצר וקטור ברירת מחדל v.add (1) // מוסיף 1 בסוף הרשימה v.add ('Java') // מוסיף 'Java' בסוף הרשימה v.add ('is') // מוסיף 'הוא' בסוף הרשימה v.add ('כיף') // מוסיף 'כיף' בסוף הרשימה System.out.println ('האלמנט הראשון הוא' + v.firstElement ())}}

תְפוּקָה

  • אובייקט lastElement () - הוא מחזיר את האלמנט האחרון
// קוד Java המציג שיטת lastElement () ייבוא ​​java.util. * מחלקה ציבורית ראשי {ציבורי ריק ריק סטטי (מחרוזת [] טענות) {וקטור v = וקטור חדש () // זה יוצר וקטור ברירת מחדל v.add (1) // מוסיף 1 בסוף הרשימה v.add ('Java') // מוסיף 'Java' בסוף הרשימה v.add ('is') // מוסיף 'הוא' בסוף הרשימה v.add ('כיף') // מוסיף 'כיף' בסוף הרשימה System.out.println ('האלמנט האחרון הוא' + v.lastElement ())}}

תְפוּקָה

  • בוליאני שווה (אובייקט o) - זה משווה את הווקטור לאובייקט שצוין לשוויון. זה מחזיר נכון אם כל האלמנטים נכונים במדדים המקבילים שלהם
// קוד Java המציג בוליאני שווה () שיטת יבוא java.util. * מחלקה ציבורית ראשי {public static void main (String [] args) {Vector v = new Vector () // זה יוצר וקטור ברירת מחדל וקטור vcopy = וקטור חדש () v.add (1) // מוסיף 1 בסוף הרשימה v.add ('Java') // מוסיף 'Java' בסוף הרשימה v.add ('is') // מוסיף ' הוא 'בסוף הרשימה v.add (' כיף ') // מוסיף' כיף 'בסוף הרשימה vcopy.add (0,1) // מוסיף 1 באינדקס 0 vcopy.add (1, 'Java') // מוסיף 'Java' באינדקס 1 vcopy.add (2, 'is') // מוסיף 'הוא' באינדקס 2 vcopy.add (3, 'Fun') // מוסיף 'Fun' באינדקס 3 vcopy.add (4, '!!!') // מוסיף 'כיף' באינדקס 4 אם (v.equals (vcopy)) System.out.println ('שני הווקטורים שווים') אחרת מערכת .out.println ('וקטורים אינם שווים')}}

תְפוּקָה

  • בטל שינוי גודל () - שיטה זו מסירה קיבולת נוספת ושומרת על היכולת רק להחזיק את האלמנטים כלומר שווים לגודל
// קוד Java המציג שיטת trimToSize () ייבוא ​​java.util. * מחלקה ציבורית ראשי {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') // מוסיף 'הוא' באינדקס 2 v.add (3, 'כיף') // מוסיף 'כיף' באינדקס 3 System.out.println ('קיבולת הווקטור היא' + v.capacity ()) v.trimToSize () System.out.println ( 'קיבולת הווקטור היא' + v.capacity ())}}

תְפוּקָה


שיטות חשובות אחרות

עד עכשיו בטח קיבלתם רעיון טוב כיצד לעבוד עם וקטורים. אם ברצונך לחקור יותר משיטות הווקטור, עיין בטבלה הבאה.

שם השיטה פונקציית השיטה

בוליאני הוא ריק ()

בודק אם קיימים אלמנטים או לא

מכיל בוליאני (אובייקט o)

משמש לבדיקת קיומו של אלמנט ספציפי, נניח o

int indexOf (אובייקט o)

הוא מחזיר את אינדקס האלמנט o

בטל removeRange (int s, int e)

מסיר אלמנטים מהווקטור החל מ- s וכלה ב- (e-1)

בטל ברור ()

מסיר את כל האלמנטים

בטל להבטיח יכולת (int c)

זה מגדיל את הקיבולת ב- c

בטל setSize (int s)

זה מגדיר את הגודל ל- s. אם גודל s>, הקיבולת הנוספת מלאה בערכי null. אם ש

אלמנט אובייקט At (int a)

מחזיר את האלמנט הקיים במספר אינדקס a

ערכת אובייקטים (int a, Object o)

מחליף את האלמנט הקיים באינדקס a באלמנט הנתון o

אובייקט [] toArray ()

מחזירה מערך המכיל את אותם אלמנטים כמו הווקטור

מה זה אסימון בג'אווה

שיבוט אובייקט ()

האובייקט הווקטורי מועתק

AddAll בוליאני (אוסף ג)

מוסיף את כל האלמנטים של אוסף c לווקטור

AddAll בוליאני (int a, אוסף c)

מכניס את כל האלמנטים של האוסף c לווקטור באינדקס שצוין a

Boolean retainAll (אוסף ג)

שומר על כל האלמנטים בווקטור שקיימים גם באוסף ג

רשימת משנה (int s, int e)

מחזיר את האלמנטים כאובייקט List, החל מ- s ומסתיים ב- (e-1) מהווקטור.

ככל שכל דבר טוב מסתיים, כך גם הבלוג שלנו בנושא וקטורים . אנו מקווים שהצלחנו לכסות את כל ההיבטים של וקטורי Java בבלוג זה והצלחתם לאסוף מעט ידע בנוגע לווקטורים.

דאג שתתאמן ככל האפשר ותחזיר את החוויה שלך.

בדוק את מאת אדוריקה, חברת למידה מקוונת מהימנה עם רשת של יותר מ -250,000 לומדים מרוצים הפרוסים ברחבי העולם. אנו כאן כדי לעזור לך בכל שלב בדרכך, ולהיות מלבד שאלות ראיונות אלה ב- Java, אנו מגישים תוכנית לימודים המיועדת לסטודנטים ואנשי מקצוע המעוניינים להיות מפתח Java.

יש לך שאלה עבורנו? אנא הזכיר זאת בסעיף ההערות של 'וקטורים בג'אווה' זה. מאמר ונחזור אליך בהקדם האפשרי.