Vector trong Java là gì và chúng ta sử dụng nó như thế nào?



Blog về 'Vectors trong Java' này sẽ giúp bạn hiểu lớp vector khác với ArrayList như thế nào và giúp bạn tìm hiểu về các phương thức khác nhau liên quan.

Vectơ trong là một trong những cấu trúc dữ liệu được sử dụng phổ biến nhất trong thế giới lập trình.Chúng ta đều biết rằng Mảng là các cấu trúc dữ liệu giữ dữ liệu theo kiểu tuyến tính. Vectơ cũng lưu trữ dữ liệu theo kiểu tuyến tính, nhưng không giống như Mảng, chúng không có kích thước cố định. Thay vào đó, kích thước của chúng có thể được tăng lên theo yêu cầu.

Lớp vectơ là một lớp con của AbstractList lớp học và thực hiện trên Danh sách .Để sử dụng Vectors, trước tiên chúng ta phải nhập lớp Vector từ gói java.util:





nhập java.util.Vector

Trong bài viết này, chúng ta sẽ thảo luận các khái niệm sau về vectơ:



Bắt đầu nào!

Lợi thế s của Vector trong Java

  • Thuộc tính có kích thước động rất hữu ích vì nó tránh lãng phí bộ nhớ trong trường hợp chúng ta không biết kích thước của cấu trúc dữ liệu tại thời điểm khai báo.
  • Khi chúng ta muốn thay đổi kích thước cấu trúc dữ liệu của mình ở giữa chương trình, vectơ có thể tỏ ra rất hữu ích.

Thuộc tính có kích thước động không phải là duy nhất đối với Vectors trong Java. Một cấu trúc dữ liệu khác, được gọi là ArrayList cũng cho thấy thuộc tính có kích thước động. Tuy nhiên, Vectors khác với ArrayLists do một số lý do:

  • Đầu tiên, Vectơ được đồng bộ hóa nên nó có lợi thế hơn so với chương trình vì có nguy cơ hỏng dữ liệu.
  • Thứ hai, Vectors có một số hàm kế thừa chỉ có thể được thực hiện trên vectơ chứ không phải trên ArrayLists.

Cách truy cập các phần tử trong vectơ

Chúng ta có thể truy cập các thành viên dữ liệu đơn giản bằng cách sử dụng chỉ mục của phần tử, giống như chúng ta truy cập các phần tử trong Mảng.



Thí dụ- Nếu chúng ta muốn truy cập phần tử thứ ba trong vectơ v, chúng ta chỉ cần gọi nó là v [3].

Vectors Constructors

Dưới đây là nhiều biến thể của vector người xây dựng Có sẵn để sử dụng:

  1. Vectơ (int initialCapacity, int Increment) - Xây dựng một vectơ với Độ mờ ban đầu cho trước và Độ lớn của nó.
  2. Vectơ (int initialCapacity) - Xây dựng một vectơ rỗng với Khả năng ban đầu đã cho. Trong trường hợp này, Tăng trưởng bằng không.
  3. Véc tơ () - Xây dựng một vector dung lượng mặc định 10.
  4. Vector (Bộ sưu tập c) - Tạo một vectơ với một tập hợp nhất định, thứ tự của các phần tử giống như được trả về bởi trình lặp của tập hợp.

Ngoài ra còn có ba tham số được bảo vệ trong vectơ

  1. Int dung lượngIncrement () - Nó tự động tăng dung lượng của vector khi kích thước trở nên lớn hơn dung lượng.
  2. Int elementCount () - cho biết số phần tử trong vectơ
  3. Object [] elementData () - mảng trong đó các phần tử của vectơ được lưu trữ

Các lỗi phổ biến nhất trong khai báo vectơ

  • Véc tơ ném một Ngoại lệ Đối số bất hợp pháp nếu InitialSize của vector được xác định là âm.
  • Nếu bộ sưu tập được chỉ định là rỗng, nó sẽ ném NullPointerException

Ghi chú:

  1. Nếu gia số vectơ không được chỉ định thì dung lượng của nó sẽ làtăng gấp đôi trong mỗi chu kỳ gia tăng.
  2. Dung lượng của một vectơ không thể nhỏ hơn kích thước, nó có thể bằng nó.

Chúng ta hãy xem xét một ví dụ về việc khởi tạo Vectors Constructors.

Ví dụ: Khởi tạo công cụ tạo vectơ

/ Mã Java minh họa Vector Constructors import java.util. * Public class Main {public static void main (String [] args) {// tạo vector mặc định Vector v1 = new Vector () // tạo vector có kích thước cho trước Vector v2 = new Vector (20) // tạo một vector có Kích thước và Vector tăng đã cho v3 = new Vector (30,10) v2.add (100) v2.add (100) v2.add (100) // tạo một vector với collection Vector v4 = new Vector (v2) System.out.println ('Vector v1 dung lượng' + v1.capacity ()) System.out.println ('Vector v2 dung lượng' + v2.capacity ()) System.out .println ('Vector v3 dung lượng' + v3.capacity ()) System.out.println ('Vector v4 dung lượng' + v4.capacity ())}

Đầu ra

Constructors - Vectors trong Java - Edureka

Cấp phát bộ nhớ của vectơ

Đến đây, chắc hẳn bạn đã hiểu rằng Vectors không có kích thước cố định, thay vào đó, chúng có khả năng thay đổi kích thước một cách linh hoạt. Người ta có thể nghĩ rằng các vectơ phân bổ không gian dài vô hạn để lưu trữ các đối tượng. Nhưng đây không phải là trường hợp. Các vectơ có thể thay đổi kích thước của chúng dựa trên hai trường ‘dung lượng’ và ‘khả năng tăng cường’. Ban đầu, kích thước bằng trường ‘dung lượng’ được cấp phát khi một vectơ được khai báo. Chúng ta có thể chèn các phần tử bằng với dung lượng. Nhưng ngay sau khi phần tử tiếp theo được chèn vào, nó sẽ tăng kích thước của mảng bằng kích thước ‘dung lượng’. Do đó, nó có thể thay đổi kích thước của nó một cách linh động.

Cho một nhà xây dựng mặc định , dung lượng sẽ tăng lên gấp đôi bất cứ khi nào dung lượng đầy và một phần tử mới sẽ được chèn vào.

Thí dụ - Giả sử chúng ta có một vectơ của Công suất ban đầu 5 và năng lực của 2. Do đó kích thước ban đầu của vector là 5 phần tử Chúng ta chèn lần lượt 5 phần tử vào vector này, đó là 1,2,3,4,5. Khi chúng ta cố gắng chèn một phần tử khác vào vector cụ thể là 6, kích thước của vector sẽ tăng lên 2. Do đó kích thước của vector bây giờ là 7. Vì vậy, vector dễ dàng điều chỉnh kích thước của nó theo số không. của các phần tử.

Một điểm thú vị khác là không giống như mảng, vectơ không chứa các đối tượng thực, mà chỉ tham chiếu đến các đối tượng. Do đó, nó cho phép các đối tượng của các kiểu dữ liệu khác nhau được lưu trữ trong cùng một vectơ.

Phương thức trong vectơ

Chúng ta hãy xem xét một số phương pháp vectơ được sử dụng rất thường xuyên.

  • Boolean add (Object o) - Nó gắn một phần tử vào cuối vector.
// Mã Java hiển thị phương thức boolean add () import java.util. * Public class Main {public static void main (String [] args) {Vector v = new Vector () // Nó tạo một vector mặc định v.add (1 ) // Thêm 1 vào cuối danh sách v.add ('Java') // Thêm 'Java' vào cuối danh sách v.add ('is') // Thêm 'là' vào cuối list v.add ('Fun') // Thêm 'Fun' vào cuối danh sách System.out.println ('Vector là' + v)}}

Đầu ra

  • Thêm vô hiệu (int Index, phần tử E) - Nó thêm phần tử đã cho tại chỉ mục được chỉ định trong vectơ
// Mã Java hiển thị phương thức void add () import java.util. * Public class Main {public static void main (String [] args) {Vector v = new Vector () // Nó tạo một vector mặc định v.add (0 , 1) // Thêm 1 tại chỉ mục 0 v.add (1, 'Java') // Thêm 'Java' tại chỉ mục 1 v.add (2, 'is') // Thêm 'là' tại chỉ mục 2 v.add (3, 'Fun') // Thêm 'Fun' ở chỉ mục 3 v.add (4, '!!!') // Thêm 'Fun' ở chỉ mục 4 System.out.println (' Vectơ là '+ v)}}

Đầu ra

  • Boolean Remove (đối tượng o) - Nó loại bỏ loại bỏ phần tử ở chỉ số đã cho trong vectơ
// Mã Java hiển thị phương thức boolean remove () import java.util. * Public class Main {public static void main (String [] args) {Vector v = new Vector () // Nó tạo một vector mặc định v.add (1 ) // Thêm 1 vào cuối danh sách v.add ('Java') // Thêm 'Java' vào cuối danh sách v.add ('is') // Thêm 'là' vào cuối list v.add ('Fun') // Thêm 'Fun' vào cuối danh sách System.out.println ('Vector trước khi loại bỏ' + v) v.remove (1) System.out.println ('Vector sau loại bỏ '+ v)}}

Đầu ra

  • Boolean removeElement ( Object obj) - Nó xóa phần tử theo tên obj của nó (không phải theo số chỉ mục)
// Mã Java hiển thị phương thức removeElement () import java.util. * Public class Main {public static void main (String [] args) {Vector v = new Vector () // Nó tạo một vector mặc định v.add (1) // Thêm 1 vào cuối danh sách v.add ('Java') // Thêm 'Java' vào cuối danh sách v.add ('is') // Thêm 'là' vào cuối danh sách v.add ('Fun') // Thêm 'Fun' vào cuối danh sách System.out.println ('Vector trước khi loại bỏ' + v) v.removeElement ('Java') System.out.println ('Vector sau khi loại bỏ '+ v)}}

Đầu ra

  • Kích thước int () - Nó trả về kích thước của vector.
// Mã Java hiển thị phương thức size () import java.util. * Public class Main {public static void main (String [] args) {Vector v = new Vector () // Nó tạo một vector mặc định v.add (0, 1) // Thêm 1 tại chỉ mục 0 v.add (1, 'Java') // Thêm 'Java' tại chỉ mục 1 v.add (2, 'is') // Thêm 'là' tại chỉ mục 2 v.add (3, 'Fun') // Thêm 'Fun' vào chỉ mục 3 System.out.println ('Kích thước vectơ là' + v.size ())}}

Đầu ra

  • Công suất Int () - Nó trả về dung lượng của vector
// Mã Java hiển thị phương thức dung lượng () import java.util. * Public class Main {public static void main (String [] args) {Vector v = new Vector () // Nó tạo một vector mặc định v.add (0, 1) // Thêm 1 tại chỉ mục 0 v.add (1, 'Java') // Thêm 'Java' tại chỉ mục 1 v.add (2, 'is') // Thêm 'là' tại chỉ mục 2 v.add (3, 'Fun') // Thêm 'Fun' vào chỉ mục 3 System.out.println ('Dung lượng vector là' + v.capacity ())}}

Đầu ra

  • Đối tượng get (int index) - Nó trả về phần tử ở vị trí đã cho trong vectơ
// Mã Java hiển thị phương thức get () import java.util. * Public class Main {public static void main (String [] args) {Vector v = new Vector () // Nó tạo một vector mặc định v.add (1) // Thêm 1 vào cuối danh sách v.add ('Java') // Thêm 'Java' vào cuối danh sách v.add ('is') // Thêm 'là' vào cuối danh sách v.add ('Fun') // Thêm 'Fun' vào cuối danh sách System.out.println ('Phần tử ở chỉ mục 1 là' + v.get (1))}}

Đầu ra

  • Đối tượng đầu tiênElement () - Nó trả về phần tử đầu tiên
// Mã Java hiển thị phương thức firstElement () import java.util. * Public class Main {public static void main (String [] args) {Vector v = new Vector () // Nó tạo một vector mặc định v.add (1) // Thêm 1 vào cuối danh sách v.add ('Java') // Thêm 'Java' vào cuối danh sách v.add ('is') // Thêm 'là' vào cuối danh sách v.add ('Fun') // Thêm 'Fun' vào cuối danh sách System.out.println ('Phần tử đầu tiên là' + v.firstElement ())}}

Đầu ra

  • Đối tượng lastElement () - Nó trả về phần tử cuối cùng
// Mã Java hiển thị phương thức lastElement () import java.util. * Public class Main {public static void main (String [] args) {Vector v = new Vector () // Nó tạo một vector mặc định v.add (1) // Thêm 1 vào cuối danh sách v.add ('Java') // Thêm 'Java' vào cuối danh sách v.add ('is') // Thêm 'là' vào cuối danh sách v.add ('Fun') // Thêm 'Fun' vào cuối danh sách System.out.println ('Phần tử cuối cùng là' + v.lastElement ())}}

Đầu ra

  • Boolean bằng (Đối tượng o) - Nó so sánh vectơ với đối tượng được chỉ định để bình đẳng. Nó trả về true nếu tất cả các phần tử đều đúng tại các chỉ số tương ứng của chúng
// Mã Java hiển thị phương thức boolean equals () import java.util. * Public class Main {public static void main (String [] args) {Vector v = new Vector () // Nó tạo một vector mặc định Vector vcopy = new Vector () v.add (1) // Thêm 1 vào cuối danh sách v.add ('Java') // Thêm 'Java' vào cuối danh sách v.add ('is') // Thêm ' là 'ở cuối danh sách v.add (' Vui ') // Thêm' Vui 'vào cuối danh sách vcopy.add (0,1) // Thêm 1 vào chỉ mục 0 vcopy.add (1, 'Java') // Thêm 'Java' tại chỉ mục 1 vcopy.add (2, 'is') // Thêm 'là' tại chỉ mục 2 vcopy.add (3, 'Vui') // Thêm 'Vui' tại chỉ mục 3 vcopy.add (4, '!!!') // Thêm 'Vui' ở chỉ mục 4 if (v.equals (vcopy)) System.out.println ('Cả hai vectơ đều bằng nhau') else System .out.println ('Các vectơ không bằng nhau')}}

Đầu ra

  • Void trimtosize () - Phương pháp này loại bỏ dung lượng thừa và giữ dung lượng chỉ để chứa các phần tử tức là bằng kích thước
// Mã Java hiển thị phương thức trimToSize () import java.util. * Public class Main {public static void main (String [] args) {Vector v = new Vector () // Nó tạo một vector mặc định v.add (0, 1) // Thêm 1 tại chỉ mục 0 v.add (1, 'Java') // Thêm 'Java' tại chỉ mục 1 v.add (2, 'is') // Thêm 'là' tại chỉ mục 2 v.add (3, 'Fun') // Thêm 'Fun' tại chỉ mục 3 System.out.println ('Dung lượng vector là' + v.capacity ()) v.trimToSize () System.out.println ( 'Công suất vectơ là' + v.capacity ())}}

Đầu ra


Các phương pháp quan trọng khác

Đến đây chắc hẳn bạn đã có một ý tưởng tốt về cách làm việc với vectơ. Nếu bạn muốn khám phá thêm các phương thức vectơ thì hãy xem bảng bên dưới.

Tên của phương pháp Chức năng của phương pháp

Boolean isEmpty ()

kiểm tra xem các phần tử có tồn tại hay không

Boolean chứa (Đối tượng o)

được sử dụng để kiểm tra sự tồn tại của một phần tử cụ thể, nói o

int indexOf (Đối tượng o)

Nó trả về chỉ mục của phần tử o

void removeRange (int s, int e)

xóa các phần tử khỏi vectơ bắt đầu từ s và kết thúc bằng (e-1)

void clear ()

loại bỏ tất cả các yếu tố

void ensureCapacity (int c)

Nó làm tăng công suất c

void setSize (int s)

Nó đặt kích thước thành s. Nếu kích thước s>, dung lượng bổ sung được lấp đầy bằng các giá trị rỗng. Nếu s

Phần tử đối tượngAt (int a)

trả về phần tử hiện có ở số chỉ mục a

Tập đối tượng (int a, Object o)

thay thế phần tử có ở chỉ mục a bằng phần tử o đã cho

Đối tượng [] toArray ()

trả về một mảng chứa các phần tử giống như vectơ

Bản sao đối tượng ()

Đối tượng vectơ được sao chép

Boolean addAll (Bộ sưu tập c)

thêm tất cả các phần tử của Bộ sưu tập c vào vectơ

Boolean addAll (int a, Collection c)

chèn tất cả các phần tử của Bộ sưu tập c đến vectơ tại chỉ số được chỉ định a

Boolean keepAll (Bộ sưu tập c)

giữ lại tất cả các phần tử trong vectơ cũng tồn tại trong Bộ sưu tập c

Liệt kê subList (int s, int e)

trả về các phần tử, như một đối tượng Danh sách, bắt đầu từ s và kết thúc bằng (e-1) từ vectơ.

Khi mọi điều tốt đẹp kết thúc, blog của chúng tôi về Vectors cũng vậy . Chúng tôi hy vọng rằng chúng tôi có thể bao gồm tất cả các khía cạnh của vectơ java trong blog này và bạn có thể thu thập một số kiến ​​thức về Vectơ.

Đảm bảo rằng bạn luyện tập nhiều nhất có thể và hoàn nguyên trải nghiệm của mình.

các hàm chỉ khác nhau về kiểu trả về không thể được nạp chồng

Kiểm tra của Edureka, một công ty học trực tuyến đáng tin cậy với mạng lưới hơn 250.000 người học hài lòng trải dài trên toàn cầu. Chúng tôi ở đây để giúp bạn từng bước trên hành trình của bạn, để trở thành một người ngoài câu hỏi phỏng vấn java này, chúng tôi còn đưa ra một chương trình giảng dạy được thiết kế cho sinh viên và các chuyên gia muốn trở thành một Nhà phát triển Java.

Có một câu hỏi cho chúng tôi? Vui lòng đề cập đến nó trong phần nhận xét của 'Vectors trong Java' này và chúng tôi sẽ liên hệ lại với bạn trong thời gian sớm nhất.