Vector ใน Java คืออะไรและเราจะใช้มันอย่างไร?



บล็อก 'เวกเตอร์ใน Java' นี้จะช่วยให้คุณเข้าใจว่าคลาสเวกเตอร์แตกต่างจาก ArrayList อย่างไรและช่วยให้คุณเรียนรู้เกี่ยวกับวิธีการต่างๆที่เกี่ยวข้อง

เวกเตอร์ใน เป็นโครงสร้างข้อมูลที่ใช้กันมากที่สุดในโลกแห่งการเขียนโปรแกรมเราทุกคนรู้ดีว่า อาร์เรย์ คือโครงสร้างข้อมูลที่เก็บข้อมูลไว้ในลักษณะเชิงเส้น เวกเตอร์ยังจัดเก็บข้อมูลในรูปแบบเชิงเส้น แต่ต่างจากอาร์เรย์คือไม่มีขนาดคงที่ แต่สามารถเพิ่มขนาดได้ตามความต้องการ

คลาสเวกเตอร์เป็นคลาสย่อยของ AbstractList ชั้นเรียนและการใช้งาน รายการ .ในการใช้ Vectors เราต้องนำเข้าคลาส Vector จากแพ็คเกจ java.util ก่อน:





นำเข้า java.util.Vector

ในบทความนี้เราจะพูดถึงแนวคิดของเวกเตอร์ต่อไปนี้:



มาเริ่มกันเลย!

ความได้เปรียบ s ของ Vector ใน Java

  • คุณสมบัติของการมีขนาดไดนามิกมีประโยชน์มากเนื่องจากหลีกเลี่ยงการสูญเสียหน่วยความจำในกรณีที่เราไม่ทราบขนาดของ โครงสร้างข้อมูล ในช่วงเวลาของการประกาศ
  • เมื่อเราต้องการเปลี่ยนขนาดโครงสร้างข้อมูลของเรากลางโปรแกรมเวกเตอร์สามารถพิสูจน์ได้ว่ามีประโยชน์มาก

คุณสมบัติของการมีขนาดไดนามิกไม่ซ้ำกับเวกเตอร์ใน Java โครงสร้างข้อมูลอื่นที่เรียกว่า ArrayList ยังแสดงคุณสมบัติของการมีขนาดไดนามิก อย่างไรก็ตามเวกเตอร์แตกต่างจาก ArrayLists เนื่องจากสาเหตุสองประการ:

  • อันดับแรกเวกเตอร์จะถูกซิงโครไนซ์ซึ่งทำให้ได้เปรียบมากกว่า เมื่อเทียบกับ โปรแกรมเนื่องจากมีความเสี่ยงที่ข้อมูลจะเสียหาย
  • ประการที่สองเวกเตอร์มีฟังก์ชันดั้งเดิมบางอย่างซึ่งสามารถใช้งานได้เฉพาะกับเวกเตอร์และไม่สามารถใช้งานได้ใน ArrayLists

วิธีเข้าถึงองค์ประกอบใน Vector

เราสามารถเข้าถึงสมาชิกข้อมูลได้ง่ายๆโดยใช้ดัชนีขององค์ประกอบเช่นเดียวกับที่เราเข้าถึงองค์ประกอบใน Arrays



ตัวอย่าง- หากเราต้องการเข้าถึงองค์ประกอบที่สามในเวกเตอร์ v เราจะเรียกมันว่า v [3]

ผู้สร้างเวกเตอร์

ด้านล่างนี้เป็นเวกเตอร์หลายรูปแบบ ช่างก่อสร้าง ใช้ได้:

  1. เวกเตอร์ (int initialCapacity, int Increment) - สร้างเวกเตอร์ด้วย initialCapacity ที่กำหนดและขนาดที่เพิ่มขึ้น
  2. เวกเตอร์ (int initialCapacity) - สร้างเวกเตอร์ว่างด้วย initialCapacity ที่กำหนด ในกรณีนี้ส่วนเพิ่มเป็นศูนย์
  3. เวกเตอร์ () - สร้างเวกเตอร์เริ่มต้นของความจุ 10
  4. เวกเตอร์ (คอลเลกชัน c) - สร้างเวกเตอร์ด้วยคอลเล็กชันที่กำหนดลำดับขององค์ประกอบจะเหมือนกับที่ส่งคืนโดยตัววนซ้ำของคอลเล็กชัน

นอกจากนี้ยังมีพารามิเตอร์ที่ป้องกันสามตัวในเวกเตอร์

  1. Int capacityIncrement () - จะเพิ่มความจุของเวกเตอร์โดยอัตโนมัติเมื่อขนาดมากกว่าความจุ
  2. Int elementCount () - บอกจำนวนองค์ประกอบในเวกเตอร์
  3. วัตถุ [] elementData () - อาร์เรย์ที่เก็บองค์ประกอบของเวกเตอร์

ข้อผิดพลาดที่พบบ่อยที่สุดในการประกาศเวกเตอร์

  • เวกเตอร์พ่นไฟล์ IllegalArgumentException ถ้า InitialSize ของเวกเตอร์ที่กำหนดเป็นค่าลบ
  • หากคอลเล็กชันที่ระบุเป็นค่าว่างระบบจะพ่น NullPointerException

บันทึก:

  1. หากไม่ได้ระบุการเพิ่มขึ้นของเวกเตอร์ความจุจะเป็นเพิ่มขึ้นเป็นสองเท่าในทุกๆรอบการเพิ่ม
  2. ความจุของเวกเตอร์ต้องไม่ต่ำกว่าขนาดมันอาจเท่ากับมัน

ลองพิจารณาตัวอย่างของการเริ่มต้น 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 ())}

เอาต์พุต

ตัวสร้าง - เวกเตอร์ใน Java - Edureka

การจัดสรรหน่วยความจำของเวกเตอร์

จนถึงตอนนี้คุณต้องเข้าใจว่าเวกเตอร์ไม่มีขนาดคงที่ แต่พวกมันสามารถเปลี่ยนขนาดได้แบบไดนามิก อาจคิดว่าเวกเตอร์จัดสรรพื้นที่ยาวไม่ จำกัด เพื่อจัดเก็บวัตถุ แต่นี่ไม่ใช่กรณี เวกเตอร์สามารถเปลี่ยนขนาดได้ตามสองช่อง 'ความจุ' และ 'กำลังการผลิต' ในขั้นต้นจะมีการจัดสรรขนาดที่เท่ากับฟิลด์ 'ความจุ' เมื่อมีการประกาศเวกเตอร์ เราสามารถแทรกองค์ประกอบได้เท่ากับความจุ แต่ทันทีที่แทรกองค์ประกอบถัดไปก็จะเพิ่มขนาดของอาร์เรย์ตามขนาด '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' บทความและเราจะติดต่อกลับโดยเร็วที่สุด