เวกเตอร์ใน เป็นโครงสร้างข้อมูลที่ใช้กันมากที่สุดในโลกแห่งการเขียนโปรแกรมเราทุกคนรู้ดีว่า อาร์เรย์ คือโครงสร้างข้อมูลที่เก็บข้อมูลไว้ในลักษณะเชิงเส้น เวกเตอร์ยังจัดเก็บข้อมูลในรูปแบบเชิงเส้น แต่ต่างจากอาร์เรย์คือไม่มีขนาดคงที่ แต่สามารถเพิ่มขนาดได้ตามความต้องการ
คลาสเวกเตอร์เป็นคลาสย่อยของ AbstractList ชั้นเรียนและการใช้งาน รายการ .ในการใช้ Vectors เราต้องนำเข้าคลาส Vector จากแพ็คเกจ java.util ก่อน:
นำเข้า java.util.Vector
ในบทความนี้เราจะพูดถึงแนวคิดของเวกเตอร์ต่อไปนี้:
- ข้อดีของ Vector ใน Java
- วิธีเข้าถึงองค์ประกอบในเวกเตอร์
- ตัวสร้างเวกเตอร์
- การจัดสรรหน่วยความจำของเวกเตอร์
- วิธีการในเวกเตอร์
มาเริ่มกันเลย!
ความได้เปรียบ s ของ Vector ใน Java
- คุณสมบัติของการมีขนาดไดนามิกมีประโยชน์มากเนื่องจากหลีกเลี่ยงการสูญเสียหน่วยความจำในกรณีที่เราไม่ทราบขนาดของ โครงสร้างข้อมูล ในช่วงเวลาของการประกาศ
- เมื่อเราต้องการเปลี่ยนขนาดโครงสร้างข้อมูลของเรากลางโปรแกรมเวกเตอร์สามารถพิสูจน์ได้ว่ามีประโยชน์มาก
คุณสมบัติของการมีขนาดไดนามิกไม่ซ้ำกับเวกเตอร์ใน Java โครงสร้างข้อมูลอื่นที่เรียกว่า ArrayList ยังแสดงคุณสมบัติของการมีขนาดไดนามิก อย่างไรก็ตามเวกเตอร์แตกต่างจาก ArrayLists เนื่องจากสาเหตุสองประการ:
- อันดับแรกเวกเตอร์จะถูกซิงโครไนซ์ซึ่งทำให้ได้เปรียบมากกว่า เมื่อเทียบกับ โปรแกรมเนื่องจากมีความเสี่ยงที่ข้อมูลจะเสียหาย
- ประการที่สองเวกเตอร์มีฟังก์ชันดั้งเดิมบางอย่างซึ่งสามารถใช้งานได้เฉพาะกับเวกเตอร์และไม่สามารถใช้งานได้ใน ArrayLists
วิธีเข้าถึงองค์ประกอบใน Vector
เราสามารถเข้าถึงสมาชิกข้อมูลได้ง่ายๆโดยใช้ดัชนีขององค์ประกอบเช่นเดียวกับที่เราเข้าถึงองค์ประกอบใน Arrays
ตัวอย่าง- หากเราต้องการเข้าถึงองค์ประกอบที่สามในเวกเตอร์ v เราจะเรียกมันว่า v [3]
ผู้สร้างเวกเตอร์
ด้านล่างนี้เป็นเวกเตอร์หลายรูปแบบ ช่างก่อสร้าง ใช้ได้:
- เวกเตอร์ (int initialCapacity, int Increment) - สร้างเวกเตอร์ด้วย initialCapacity ที่กำหนดและขนาดที่เพิ่มขึ้น
- เวกเตอร์ (int initialCapacity) - สร้างเวกเตอร์ว่างด้วย initialCapacity ที่กำหนด ในกรณีนี้ส่วนเพิ่มเป็นศูนย์
- เวกเตอร์ () - สร้างเวกเตอร์เริ่มต้นของความจุ 10
- เวกเตอร์ (คอลเลกชัน c) - สร้างเวกเตอร์ด้วยคอลเล็กชันที่กำหนดลำดับขององค์ประกอบจะเหมือนกับที่ส่งคืนโดยตัววนซ้ำของคอลเล็กชัน
นอกจากนี้ยังมีพารามิเตอร์ที่ป้องกันสามตัวในเวกเตอร์
- Int capacityIncrement () - จะเพิ่มความจุของเวกเตอร์โดยอัตโนมัติเมื่อขนาดมากกว่าความจุ
- Int elementCount () - บอกจำนวนองค์ประกอบในเวกเตอร์
- วัตถุ [] elementData () - อาร์เรย์ที่เก็บองค์ประกอบของเวกเตอร์
ข้อผิดพลาดที่พบบ่อยที่สุดในการประกาศเวกเตอร์
- เวกเตอร์พ่นไฟล์ IllegalArgumentException ถ้า InitialSize ของเวกเตอร์ที่กำหนดเป็นค่าลบ
- หากคอลเล็กชันที่ระบุเป็นค่าว่างระบบจะพ่น NullPointerException
บันทึก:
- หากไม่ได้ระบุการเพิ่มขึ้นของเวกเตอร์ความจุจะเป็นเพิ่มขึ้นเป็นสองเท่าในทุกๆรอบการเพิ่ม
- ความจุของเวกเตอร์ต้องไม่ต่ำกว่าขนาดมันอาจเท่ากับมัน
ลองพิจารณาตัวอย่างของการเริ่มต้น Vectors Constructor
ตัวอย่าง: การเริ่มต้นตัวสร้างเวกเตอร์
/ โค้ด Java ที่แสดง Vector Constructors นำเข้า java.util * คลาสสาธารณะ Main {public static void main (String [] args) {// create default vector Vector v1 = new Vector () // สร้างเวกเตอร์ของ Size Vector v2 = new Vector (20) // สร้างเวกเตอร์ของ Size ที่กำหนดและ Increment Vector v3 = new 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 ของความจุ' + v2.capacity ()) System.out .println ('Vector v3 ของความจุ' + v3.capacity ()) System.out.println ('Vector v4 ของความจุ' + v4.capacity ())}
การจัดสรรหน่วยความจำของเวกเตอร์
จนถึงตอนนี้คุณต้องเข้าใจว่าเวกเตอร์ไม่มีขนาดคงที่ แต่พวกมันสามารถเปลี่ยนขนาดได้แบบไดนามิก อาจคิดว่าเวกเตอร์จัดสรรพื้นที่ยาวไม่ จำกัด เพื่อจัดเก็บวัตถุ แต่นี่ไม่ใช่กรณี เวกเตอร์สามารถเปลี่ยนขนาดได้ตามสองช่อง 'ความจุ' และ 'กำลังการผลิต' ในขั้นต้นจะมีการจัดสรรขนาดที่เท่ากับฟิลด์ 'ความจุ' เมื่อมีการประกาศเวกเตอร์ เราสามารถแทรกองค์ประกอบได้เท่ากับความจุ แต่ทันทีที่แทรกองค์ประกอบถัดไปก็จะเพิ่มขนาดของอาร์เรย์ตามขนาด 'capacityIncrement' ดังนั้นจึงสามารถเปลี่ยนขนาดได้แบบไดนามิก
สำหรับ ตัวสร้างเริ่มต้น ความจุจะเพิ่มขึ้นเป็นสองเท่าเมื่อความจุเต็มและจะต้องใส่องค์ประกอบใหม่
ตัวอย่าง - สมมติว่าเรามีเวกเตอร์ของ InitialCapacity 5 และ ความจุ จาก 2 ดังนั้นขนาดเริ่มต้นของเวกเตอร์คือ 5 องค์ประกอบเราแทรก 5 องค์ประกอบลงในเวกเตอร์นี้ทีละรายการคือ 1,2,3,4,5 เมื่อเราพยายามแทรกองค์ประกอบอื่นลงในเวกเตอร์คือ 6 ขนาดของเวกเตอร์จะเพิ่มขึ้นด้วย 2 ดังนั้นขนาดของเวกเตอร์จึงเป็น 7 ดังนั้นเวกเตอร์จึงปรับขนาดได้อย่างง่ายดายตามหมายเลข ขององค์ประกอบ
ประเด็นที่น่าสนใจอีกประการหนึ่งก็คือเวกเตอร์ไม่ได้มีวัตถุจริง แต่ไม่เหมือนกับอาร์เรย์เท่านั้น ดังนั้นจึงอนุญาตให้จัดเก็บออบเจ็กต์ประเภทข้อมูลที่แตกต่างกันในเวกเตอร์เดียวกัน
วิธีการใน Vector
มาดูวิธีการเวกเตอร์ที่ใช้บ่อยมาก ๆ
- เพิ่มบูลีน (Object o) - มันต่อท้ายองค์ประกอบที่ส่วนท้ายของเวกเตอร์
// โค้ด Java แสดง boolean add () 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' ที่ส่วนท้ายของ list v.add ('Fun') // เพิ่ม 'Fun' ที่ท้ายรายการ System.out.println ('The vector is' + v)}}
เอาต์พุต
- เพิ่มโมฆะ (ดัชนี int องค์ประกอบ E) - จะเพิ่มองค์ประกอบที่กำหนดในดัชนีที่ระบุในเวกเตอร์
// โค้ด Java แสดง 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 แสดงวิธีการนำเข้าบูลีนลบ () java.util * คลาสสาธารณะ 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 before remove' + v) v.remove (1) System.out.println ('Vector after การลบ '+ v)}}
เอาต์พุต
- บูลีน removeElement ( วัตถุ obj) - มันลบองค์ประกอบด้วยชื่อ obj (ไม่ใช่ตามหมายเลขดัชนี)
// โค้ด Java ที่แสดงวิธี removeElement () 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 before remove' + v) v.removeElement ('Java') System.out.println ('Vector หลังการลบ '+ v)}}
เอาต์พุต
- ขนาด Int () - จะส่งกลับขนาดของเวกเตอร์
// โค้ด Java แสดงขนาด () 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 ('The vector size is' + v.size ())}}
เอาต์พุต
- ความจุ Int () - ส่งกลับค่าความจุของเวกเตอร์
// โค้ด Java แสดงความจุ () วิธีการนำเข้า java.util. * คลาสสาธารณะ 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 ('The vector capacity is' + v.capacity ())}}
เอาต์พุต
- รับวัตถุ (ดัชนี int) - มันส่งคืนองค์ประกอบที่ตำแหน่งที่กำหนดในเวกเตอร์
// โค้ด Java แสดง 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 () - มันส่งคืนองค์ประกอบแรก
// โค้ด Java ที่แสดง 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 () - มันส่งคืนองค์ประกอบสุดท้าย
// โค้ด Java แสดง 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 ())}}
เอาต์พุต
- บูลีนเท่ากับ (Object o) - มันเปรียบเทียบเวกเตอร์กับวัตถุที่ระบุเพื่อความเท่าเทียมกัน จะคืนค่าเป็นจริงหากองค์ประกอบทั้งหมดเป็นจริงที่ดัชนีที่เกี่ยวข้อง
// โค้ด Java แสดงบูลีนเท่ากับ () method import java.util. * public class Main {public static void main (String [] args) {Vector v = new Vector () // สร้างเวกเตอร์เริ่มต้น Vector vcopy = เวกเตอร์ใหม่ () v.add (1) // เพิ่ม 1 ที่ท้ายรายการ v.add ('Java') // เพิ่ม 'Java' ที่ท้ายรายการ v.add ('is') // Adds ' คือ 'ท้ายรายการ v.add (' สนุก ') // เพิ่ม' สนุก 'ที่ท้ายรายการ vcopy.add (0,1) // เพิ่ม 1 ที่ดัชนี 0 vcopy.add (1, 'Java') // เพิ่ม 'Java' ที่ดัชนี 1 vcopy.add (2, 'is') // Adds 'is' at the index 2 vcopy.add (3, 'Fun') // เพิ่ม 'Fun' ที่ดัชนี 3 vcopy.add (4, '!!!') // เพิ่ม 'Fun' ที่ดัชนี 4 if (v.equals (vcopy)) System.out.println ('เวกเตอร์ทั้งสองเท่ากัน') ระบบอื่น .out.println ('เวกเตอร์ไม่เท่ากัน')}}
เอาต์พุต
- โมฆะ trimtosize () - วิธีนี้จะขจัดความจุพิเศษและคงความจุไว้เพียงเพื่อเก็บองค์ประกอบนั่นคือเท่ากับขนาด
// โค้ด Java แสดงวิธีการ trimToSize () 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 ())}}
เอาต์พุต
วิธีการที่สำคัญอื่น ๆ
ตอนนี้คุณต้องมีความคิดที่ดีในการทำงานกับเวกเตอร์ หากคุณต้องการสำรวจเพิ่มเติมเกี่ยวกับวิธีการเวกเตอร์ให้ดูที่ตารางด้านล่างนี้
ชื่อของวิธีการ | ฟังก์ชั่นของวิธีการ |
บูลีน isEmpty () | ตรวจสอบว่ามีองค์ประกอบอยู่หรือไม่ |
บูลีนประกอบด้วย (วัตถุ o) | ใช้เพื่อตรวจสอบการมีอยู่ขององค์ประกอบเฉพาะพูด o |
int indexOf (วัตถุ o) | ส่งกลับดัชนีขององค์ประกอบ o |
โมฆะ removeRange (int s, int e) | ลบองค์ประกอบออกจากเวกเตอร์โดยเริ่มจาก s และลงท้ายด้วย (e-1) |
เป็นโมฆะชัดเจน () | ลบองค์ประกอบทั้งหมด |
เป็นโมฆะ sureCapacity (int c) | เพิ่มความจุโดย c |
เป็นโมฆะ setSize (int s) | มันกำหนดขนาดเป็น s ถ้าขนาด s> ความจุพิเศษจะเต็มไปด้วยค่า null ถ้า s |
องค์ประกอบของวัตถุที่ (int a) | ส่งคืนองค์ประกอบที่มีอยู่ในดัชนีหมายเลข a |
ชุดวัตถุ (int a, Object o) | แทนที่องค์ประกอบที่มีอยู่ในดัชนี a ด้วยองค์ประกอบที่กำหนด o |
วัตถุ [] toArray () | ส่งคืนอาร์เรย์ที่มีองค์ประกอบเดียวกันกับเวกเตอร์ |
โคลนวัตถุ () | วัตถุเวกเตอร์ถูกคัดลอก |
บูลีน addAll (คอลเลกชัน c) | เพิ่มองค์ประกอบทั้งหมดของ Collection c ให้กับเวกเตอร์ |
บูลีน addAll (int a คอลเลกชัน c) | แทรกองค์ประกอบทั้งหมดของ Collection c ไปยังเวกเตอร์ที่ดัชนีที่ระบุ a |
บูลีนคงทั้งหมด (คอลเลกชัน c) | เก็บองค์ประกอบทั้งหมดในเวกเตอร์ที่มีอยู่ในคอลเลกชัน c |
แสดงรายการย่อย (int s, int e) | ส่งคืนองค์ประกอบเป็นวัตถุรายการโดยเริ่มจาก s และลงท้ายด้วย (e-1) จากเวกเตอร์ |
เมื่อทุกสิ่งที่ดีสิ้นสุดลงบล็อกของเราในเวกเตอร์ก็เช่นกัน . เราหวังว่าเราจะสามารถครอบคลุมทุกแง่มุมของเวกเตอร์จาวาในบล็อกนี้และคุณสามารถรวบรวมความรู้เกี่ยวกับเวกเตอร์ได้
ให้แน่ใจว่าคุณฝึกฝนให้มากที่สุดและเปลี่ยนประสบการณ์
system.exit (1) java
ตรวจสอบไฟล์ โดย Edureka บริษัท การเรียนรู้ออนไลน์ที่เชื่อถือได้ซึ่งมีเครือข่ายผู้เรียนที่พึงพอใจมากกว่า 250,000 คนกระจายอยู่ทั่วโลก เราพร้อมที่จะช่วยเหลือคุณในทุกขั้นตอนในการเดินทางของคุณสำหรับการเป็นนอกเหนือจากคำถามสัมภาษณ์ java นี้เรามาพร้อมกับหลักสูตรที่ออกแบบมาสำหรับนักเรียนและมืออาชีพที่ต้องการเป็น Java Developer
มีคำถามสำหรับเรา? โปรดระบุไว้ในส่วนความคิดเห็นของ 'Vectors in Java' บทความและเราจะติดต่อกลับโดยเร็วที่สุด