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