เวกเตอร์ใน Java | Java Vector Class พร้อมตัวอย่าง

เผยแพร่แล้ว: 2021-05-26

ในการเขียนโปรแกรม โครงสร้างข้อมูลที่ใช้กันมากที่สุดอย่างหนึ่งคือ Vector ใน Java อาร์เรย์ คือโครงสร้างข้อมูลแบบสแตติกที่สามารถจัดเก็บข้อมูลแบบเชิงเส้นได้ ในทำนองเดียวกัน vector ใน java ยังเก็บข้อมูลแบบเส้นตรง แต่ไม่จำกัดขนาดคงที่ แต่ขนาดของมันสามารถขยายหรือหดได้ตามความต้องการ คลาสพาเรนต์คือคลาส AbstractList และใช้งานบน List Interface

ก่อนที่คุณจะเริ่มใช้เวกเตอร์ ให้นำเข้าจาก java.util.package ดังนี้:

นำเข้า java.util.Vector

สารบัญ

การประกาศและการประเมินองค์ประกอบของเวกเตอร์

นี่คือวิธีการประกาศเวกเตอร์ในจาวา:

คลาสสาธารณะ Vector<V> ขยาย AbstractList<V>

ใช้ List<V>, RandomAccess, Cloneable, Serializable

โดยที่ V คือประเภทขององค์ประกอบที่สามารถเป็น int, string, char เป็นต้น

เช่นเดียวกับที่เราเข้าถึงสมาชิกข้อมูลในอาร์เรย์ เราสามารถทำได้ในเวกเตอร์ด้วย โดยใช้ดัชนีขององค์ประกอบ ตัวอย่างเช่น องค์ประกอบที่สองของ Vector E สามารถเข้าถึงได้เป็น E[2]

ข้อผิดพลาดทั่วไปบางอย่างที่เกิดขึ้นขณะประกาศเวกเตอร์ในจาวา:

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

ตัวสร้าง

1. เวกเตอร์ (int initialCapacity, int Increment)

สิ่งนี้จะสร้างเวกเตอร์ใน java ด้วยความจุเริ่มต้นตามที่ระบุ และจะมีการระบุการเพิ่มขึ้นด้วย ด้วยการเพิ่มขึ้น จำนวนองค์ประกอบที่จัดสรรทุกครั้งที่มีการปรับขนาดเวกเตอร์ขึ้นจะถูกระบุ

วากยสัมพันธ์: Vector<V> e = new Vector<V>(int initialCapacity, int Increment);

2. เวกเตอร์ (int เริ่มต้นความจุ)

มันสร้างเวกเตอร์ใน java ด้วยความจุเริ่มต้นเท่ากับขนาดตามที่ระบุ

วากยสัมพันธ์: Vector<V> e = new Vector<V>(int initialCapacity);

3. เวกเตอร์ ()

มันสร้างเวกเตอร์ใน java ด้วยความจุเริ่มต้นเริ่มต้นที่ 10

วากยสัมพันธ์: Vector<V> e = new Vector<V>();

4. เวกเตอร์ (คอลเลกชัน c)

มันสร้างเวกเตอร์ใน java ซึ่งมีองค์ประกอบที่เป็นของคอลเลกชัน c

วากยสัมพันธ์: Vector<V> e = new Vector<V>(Collection c);

นี่คือตัวอย่างเพื่อสาธิตการสร้างและการใช้เวกเตอร์ในจาวา:

รหัส

นำเข้า java.util.*;

คลาสสาธารณะหลัก{

โมฆะคงที่สาธารณะ main(String[] args)

{

// สร้างเวกเตอร์เริ่มต้น

เวกเตอร์ a = เวกเตอร์ใหม่ ();

// สร้างเวกเตอร์ที่มีขนาดที่ระบุ

เวกเตอร์ b = เวกเตอร์ใหม่ (20);

// สร้างเวกเตอร์ที่มีขนาดและส่วนเพิ่มที่ระบุ

เวกเตอร์ c = เวกเตอร์ใหม่ (30,10);

ข.เพิ่ม(100);

ข.เพิ่ม(200);

ข.เพิ่ม(300);

// สร้างเวกเตอร์ด้วยคอลเล็กชันที่ระบุ

เวกเตอร์ d = เวกเตอร์ใหม่ (b)

System.out.println("เวกเตอร์ของความจุ" + a.capacity());

System.out.println(“เวกเตอร์ b ของความจุ” + b.capacity());

System.out.println("เวกเตอร์ c ของความจุ" + c.capacity());

System.out.println(“เวกเตอร์ d ของความจุ ” + d.capacity());

}}

เอาท์พุต

หมายเหตุ: .capacity() ใช้เพื่อคืนค่าความจุของเวกเตอร์

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

1. Int elementCount()- มันบอกจำนวนองค์ประกอบที่เวกเตอร์มี

2. Int capcityIncremen()- เมื่อขนาดของเวกเตอร์มากกว่าความจุ ความจุจะเพิ่มขึ้นโดยอัตโนมัติด้วยสิ่งนี้

3. Object[] elementData()- องค์ประกอบของเวกเตอร์ถูกเก็บไว้ในอาร์เรย์

วิธีการ

ต่อไปนี้คือวิธีการที่ใช้บ่อยของเวกเตอร์ในจาวา:

1. เพิ่มองค์ประกอบ

Boolean add(Object o)- องค์ประกอบถูกต่อท้าย vector

เพิ่มเป็นโมฆะ (องค์ประกอบดัชนี int V)- องค์ประกอบที่กำหนดจะถูกเพิ่มไปยังดัชนีที่ระบุในเวกเตอร์

รหัสสำหรับเพิ่มองค์ประกอบใน Vector ใน java:

นำเข้า java.util.*;

นำเข้า java.io.*;

AddElementsToVector คลาสสาธารณะ {

โมฆะคงที่สาธารณะ main(String[] arg)

{

// สร้างเวกเตอร์เริ่มต้น

เวกเตอร์ a = เวกเตอร์ใหม่ ();

// การเพิ่มองค์ประกอบโดยใช้ add() method

ก.เพิ่ม(1);

ก.เพิ่ม(2);

a.add("เวกเตอร์");

a.add(“สำหรับ”);

ก.เพิ่ม(3);

System.out.println(“เวกเตอร์ a คือ ” + a);

// สร้างเวกเตอร์ทั่วไป

เวกเตอร์ <จำนวนเต็ม> b = เวกเตอร์ใหม่ <จำนวนเต็ม> ();

ข.เพิ่ม(0);

b.add(1);

ข.เพิ่ม(2);

System.out.println(“เวกเตอร์ b คือ ” + b);

}

}

เอาท์พุต

2. ลบองค์ประกอบ

ลบบูลีน (วัตถุ o) – ใช้เพื่อลบองค์ประกอบที่ดัชนีที่ระบุในเวกเตอร์

เมื่อองค์ประกอบถูกลบออก องค์ประกอบทั้งหมดจะถูกเลื่อนไปทางซ้ายเพื่อเติมช่องว่าง ดัชนีจะได้รับการอัปเดตแล้ว

รหัสเพื่อแสดงการลบองค์ประกอบจากเวกเตอร์ใน java:

นำเข้า java.util.*;

นำเข้า java.io.*;

คลาสสาธารณะ ลบ {

โมฆะคงที่สาธารณะ main(String[] arg)

{

// สร้างเวกเตอร์เริ่มต้น

เวกเตอร์ a = เวกเตอร์ใหม่ ();

// การเพิ่มองค์ประกอบโดยใช้ add() method

ก.เพิ่ม(1);

ก.เพิ่ม(2);

a.add("เวกเตอร์");

a.add(“สำหรับ”);

ก.เพิ่ม(4);

// ลบองค์ประกอบ

ก.ลบ(2);

// ตรวจสอบ

System.out.println(“หลังการลบ: ” + a);

}

}

เอาท์พุต

ชำระเงิน: จะสร้างอาชีพที่ประสบความสำเร็จใน Java ได้อย่างไร

3. เปลี่ยนองค์ประกอบ

สามารถใช้เมธอด set () เพื่อเปลี่ยนองค์ประกอบหลังจากเพิ่มองค์ประกอบแล้ว ดัชนีขององค์ประกอบสามารถอ้างอิงได้เมื่อมีการจัดทำดัชนีเวกเตอร์ วิธีนี้ใช้ดัชนีและองค์ประกอบที่อัปเดต

รหัสเพื่อเปลี่ยนองค์ประกอบในเวกเตอร์ใน java

นำเข้า java.util.*;

อัปเดตคลาสสาธารณะ {

โมฆะคงที่สาธารณะหลัก (สตริง args[])

{

// สร้าง Vector ว่าง

Vector<Integer> a = เวกเตอร์ใหม่ <Integer>();

// เพิ่มองค์ประกอบ

ก.เพิ่ม(1);

ก.เพิ่ม(2);

ก.เพิ่ม(3);

ก.เพิ่ม(10);

ก.เพิ่ม(20);

// แสดง

System.out.println(“เวกเตอร์: ” + a);

// แทนที่

System.out.println("การแทนที่"

+ a.set(0, 22));

System.out.println("การแทนที่"

+ a.set(4, 50));

// แสดงเวกเตอร์ที่แก้ไข

System.out.println("เวกเตอร์ใหม่คือ:" + a);

}

}

เอาท์พุต

4. วนซ้ำเวกเตอร์

มีหลายวิธีในการวนซ้ำเวกเตอร์ หนึ่งในนั้นคือเมธอด get() นี่คือโปรแกรมสำหรับวนซ้ำองค์ประกอบใน Vector ใน java:

นำเข้า java.util.*;

ทำซ้ำคลาสสาธารณะ {

โมฆะคงที่สาธารณะหลัก (สตริง args[])

{

// สร้างตัวอย่าง vector

Vector<String> a = เวกเตอร์ใหม่ <>();

// เพิ่มองค์ประกอบโดยใช้ add() วิธีการ

a.add("เวกเตอร์");

a.add("ใน");

a.add(1, “java”);

// ใช้ Get method และ for loop

สำหรับ (int i = 0; i <a.size(); i++) {

System.out.print(a.get(i) + ” “);

}

System.out.println();

// ใช้สำหรับแต่ละลูป

สำหรับ (สตริง str : a)

System.out.print(str + ” “);

}

}

เอาท์พุต

อ่าน: สถาปัตยกรรมและส่วนประกอบ Java

วิธีการที่สำคัญอื่นๆ

  • Int size() – ใช้เพื่อคืนค่าขนาดของ vector
  • รับวัตถุ (ดัชนี int) – ใช้เพื่อส่งคืนองค์ประกอบที่ตำแหน่งที่ระบุใน vector
  • Object firstElement() – ใช้เพื่อคืนค่าองค์ประกอบแรกของเวกเตอร์ใน java
  • Object lastElement() – ใช้เพื่อคืนค่าองค์ประกอบสุดท้ายของ vector ใน java
  • บูลีนเท่ากับ (วัตถุ o) – ใช้เพื่อเปรียบเทียบเวกเตอร์กับวัตถุที่กำหนดเพื่อความเท่าเทียมกัน คืนค่า จริง หากองค์ประกอบทั้งหมดเป็นจริงที่ดัชนีที่เกี่ยวข้อง
  • โมฆะ trimtosize() – ใช้เพื่อลบความจุเพิ่มเติมและรักษาความจุให้เท่ากับ size

ข้อมูลเพิ่มเติมเกี่ยวกับเวกเตอร์

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

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

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

เมื่อมีการประกาศเวกเตอร์ จะมีการจัดสรรฟิลด์ 'ความจุ' ที่เท่ากับขนาด และสามารถเพิ่มองค์ประกอบที่เท่ากับความจุได้ ทันทีที่องค์ประกอบถัดไปถูกแทรก ขนาดของอาร์เรย์จะเพิ่มขึ้นตามขนาด 'capacityIncrement' สิ่งนี้ทำให้เวกเตอร์สามารถเปลี่ยนขนาดได้—ความจุเพิ่มขึ้นเป็นสองเท่าสำหรับคอนสตรัคเตอร์เริ่มต้นเมื่อองค์ประกอบใหม่ถูกแทรก

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

ข้อดีของ Vector ใน Java

ขนาดไดนามิกของเวกเตอร์ช่วยหลีกเลี่ยงการสูญเสียหน่วยความจำ และขนาดของโครงสร้างข้อมูลของเราสามารถเปลี่ยนแปลงได้ตลอดเวลาที่อยู่ตรงกลางของโปรแกรม

ทั้งเวกเตอร์และ ArrayLists เป็นไดนามิก อย่างไรก็ตาม เวกเตอร์จะมีประโยชน์มากกว่าเช่น:

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

บทสรุป

เวกเตอร์ในจาวาเป็นอาร์เรย์ไดนามิกที่ไม่จำกัดขนาดซึ่งเป็นส่วนหนึ่งของ Java Collection Framework ตั้งแต่ Java 1.2 เราเห็นคอนสตรัคเตอร์ที่หลากหลายและวิธีเวกเตอร์ที่นิยมใช้ในบล็อกนี้ นอกจากนี้ยังควรให้ความสนใจกับคลาส Vector ในสภาพแวดล้อมที่ปลอดภัยสำหรับเธรดเท่านั้น

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับ Java, OOP และการพัฒนาซอฟต์แวร์ฟูลสแตก โปรดดูโปรแกรม Executive PG ของ upGrad & IIIT-B ในการพัฒนาซอฟต์แวร์ – ความเชี่ยวชาญเฉพาะด้านการพัฒนาแบบเต็มสแต็ก ซึ่งออกแบบมาสำหรับมืออาชีพที่ทำงานและให้บริการมากกว่า 500 ชั่วโมง การฝึกอบรมที่เข้มงวด โครงการ 9+ และการมอบหมายงาน สถานะศิษย์เก่า IIIT-B โครงการหลักที่ปฏิบัติได้จริงและความช่วยเหลือด้านงานกับบริษัทชั้นนำ

เวกเตอร์ใน Java คืออะไร?

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

ข้อดีของเวกเตอร์มากกว่าอาร์เรย์คืออะไร?

อาร์เรย์มีขนาดคงที่ ซึ่งหมายความว่าไม่สามารถขยายหรือย่อขนาดได้ตามต้องการ เวกเตอร์ถูกนำมาใช้เป็นอาร์เรย์ที่ปรับขนาดได้แบบไดนามิก ซึ่งช่วยให้ขยายและย่อขนาดได้ตามต้องการ สิ่งนี้มีประโยชน์สำหรับการเติบโตอย่างต่อเนื่องของข้อมูล ตัวอย่างเช่น โปรแกรมที่อ่านไฟล์ข้อความทีละบรรทัดจะสามารถเติบโตควบคู่ไปกับขนาดของไฟล์ได้ โดยทั่วไปเวกเตอร์จะมีประสิทธิภาพมากกว่าอาร์เรย์ นี่เป็นเพราะเวกเตอร์ถูกนำมาใช้เป็นอาร์เรย์ของการอ้างอิง (java.lang.Objects) ในขณะที่อาร์เรย์ถูกนำไปใช้เป็นอาร์เรย์ของอ็อบเจ็กต์

ArrayList ใน Java คืออะไร?

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