You are on page 1of 6

Vector là một lớp (class) dùng chứa mảng các đối tượng và có thể mở rộng được.

Cũng giống
như array, nó chứa các thành phần có thể được truy cập bằng index. Tuy nhiên kích thước của
một Vector có thể được mở rộng khi cần và thu hẹp lại khi xóa các items trong nó.

Khai báo
(http://java.sun.com/j2se/1.4.2/docs/api/java/util/Vector.html#Vector%28%29)Vector
(http://java.sun.com/j2se/1.4.2/docs/api/java/util/Vector.html#Vector%28%29)()
Khai báo một vector rỗng, theo mặc địng thì kích thướt của mảng sẻ là 10 và mức tăng sẻ là
(capacity increment) 0.

Vector (http://java.sun.com/j2se/1.4.2/docs/api/java/util/Vector.html#Vector
%28java.util.Collection%29)(Coll ection
(http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collection.html) c)
Khai báo một vector chứa các thành phần của một tập hợp chỉ định c.

Vector (http://java.sun.com/j2se/1.4.2/docs/api/java/util/Vector.html#Vector%28int%29)(int
initialCapacity)
Khai báo một vector với kích thước của mảng là initial capacity và mức tăng là 0.

Vector (http://java.sun.com/j2se/1.4.2/docs/api/java/util/Vector.html#Vector%28int,%20int%29)
(int initialCapacity, int capacityIncrement)
Khai báo một vector với kích thước của mảng là initial capacity và mức tăng là capacity
increment.

Đoạn code sau đây nhằm so sánh thời gian cấp phát vùng nhớ và truy xuất thành phần trong
mảng khi dùng Vector và Array.

/**
* @(#)VectorBenchmark1.java
*
*
*/

import java.util.Vector;

public class VectorBenchmark1 {

public static final int MaxSize = 100000;

public static final int NTRIES = 10;

public static void main(String[] args)


{
// So sánh thời gian cấp phát vùng nhớ giữa Vector và Array

//phần khai báo Vector


Vector v = new Vector();

long start = System.currentTimeMillis();//thời diểm lúc bắt đầu


for (int i = 0; i < MaxSize; i++)
v.add(new Integer(i));
long end = System.currentTimeMillis();//thời điểm lúc kết thúc
System.out.println("Allocating vector elements: " + (end - start)
+ " milliseconds");

//phần khai báo Array


Integer[] integerArray = new Integer[1];
start = System.currentTimeMillis();//thời diểm lúc bắt đầu
for (int i = 0; i < MaxSize; i++) {
if (i >= integerArray.length) {
Integer[] b = new Integer[i * 2];
System.arraycopy(integerArray, 0, b, 0, integerArray.length);
integerArray = b;
}
integerArray[i] = new Integer(i);
}
end = System.currentTimeMillis();//thời điểm lúc kết thúc
System.out.println("Allocating array elements: " + (end - start)
+ " milliseconds");

// So sánh thời gian truy xuất các thành phần trong Vector và Array
start = System.currentTimeMillis();
for (int j = 0; j < NTRIES; j++)
for (int i = 0; i < MaxSize; i++) {
Integer r = (Integer) v.get(i);
v.set(i, new Integer(r.intValue() + 1));
}
end = System.currentTimeMillis();
System.out.println("Accessing vector elements: " + (end - start)
+ " milliseconds");

start = System.currentTimeMillis();
for (int j = 0; j < NTRIES; j++)
for (int i = 0; i < MaxSize; i++) {
Integer r = integerArray[i];
integerArray[i] = new Integer(r.intValue() + 1);
}
end = System.currentTimeMillis();
System.out.println("Accessing array elements: " + (end - start)
+ " milliseconds");
}
}
Kết quả xuất ra màn hình như sau:
http://www.java2s.com/Code/JavaImages/VectorBenchmark1.PNG

tham khảo thêm tại:

http://java.sun.com/j2se/1.4.2/docs/api/java/util/Vector.html (phần lí thuyết)


(http://java.sun.com/j2se/1.4.2/docs/api/java/util/Vector.html)

http://www.java2s.com/Code/Java/Collections-Data-Structure/UseVectorinjavautil.htm (code
demo) (http://www.java2s.com/Code/Java/Collections-Data-Structure/UseVectorinjavautil.htm)

saigonkosao
06-25-2007, 09:44 PM
Vector trên java có vẻ tương đương với ArrayList trong C#;)

thanhgiangng
06-26-2007, 09:38 AM
Tiếp tục với đề tài về Vector xin phép post tiếp 2 vấn đề chính yếu của việc sử dụng Vector.

1. Tìm element trong một vector:

import java.util.Vector;

public class FindVector {

public static void main(String args[]) {


String data[] = { "Java", "Source", "and", "Support", "."};

Vector v = new Vector();


for (int i = 0, n = data.length; i < n; i++) {
v.add(data[i]);
}
System.out.println(v);
System.out.println("Contains Java?: " + v.contains("Java"));
System.out.println("Contains Java2s?: " + v.contains("Java2s"));
System.out.println("Where's and?: " + v.indexOf("and"));
System.out.println("Where's Source?: " + v.indexOf("Source"));
System.out.println("Where's Java from end?: "
+ v.lastIndexOf("Java"));
}
}
Kết quả xuất ra màn hình:
http://www.java2s.com/Code/JavaImages/FindVector.PNG

2. Lưu Vector thành File:

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Arrays;
import java.util.Enumeration;
import java.util.Vector;

public class SaveVector1 {


public static void main(String args[]) throws Exception {
Vector v = new Vector(Arrays.asList(args));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(baos);
oos.writeObject(v);
oos.close();
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
ObjectInputStream ois = new ObjectInputStream(bais);
Vector v2 = (Vector) ois.readObject();
Enumeration e = v.elements();
while (e.hasMoreElements()) {
System.out.println(e.nextElement());
}
}
}

Tham khảo thêm tại đây:


http://www.java2s.com/Code/Java/Collections-Data-Structure/SaveVectortofile.htm

thanhgiangng
06-26-2007, 10:04 AM
Vector trên java có vẻ tương đương với ArrayList trong C#;)

Vấn đề anh nói cũng đáng tìm hiểu đó :) Bởi vì trong Java cũng có ArrayList :))

Không biết ArrayList trong C# có giống bên java hay không nhưng em tìm được cái sự khác biệt
giữa Vector và ArrayList trong Java, mọi người tham khảo cho ý kiến nhé:

Vector vs ArrayList

- Cùng nằm trong gói java.util, và về cơ bản là chúng giống nhau.


java.util
Class Vector

java.lang.Object (http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html)
http://java.sun.com/j2se/1.4.2/docs/api/resources/inherit.gifjava.util.AbstractCollection
(http://java.sun.com/j2se/1.4.2/docs/api/java/util/AbstractCollection.html)
http://java.sun.com/j2se/1.4.2/docs/api/resources/inherit.gifjava.util.AbstractList
(http://java.sun.com/j2se/1.4.2/docs/api/java/util/AbstractList.html)
http://java.sun.com/j2se/1.4.2/docs/api/resources/inherit.gifjava.util.Vector

java.util
Class ArrayList

java.lang.Object (http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html)
http://java.sun.com/j2se/1.4.2/docs/api/resources/inherit.gifjava.util.AbstractCollection
(http://java.sun.com/j2se/1.4.2/docs/api/java/util/AbstractCollection.html)
http://java.sun.com/j2se/1.4.2/docs/api/resources/inherit.gifjava.util.AbstractList
(http://java.sun.com/j2se/1.4.2/docs/api/java/util/AbstractList.html)
http://java.sun.com/j2se/1.4.2/docs/api/resources/inherit.gifjava.util.ArrayList- Vector tối ưu các
thực thi theo dạng luồng (Threaded execution) còn ArrayList tối ưu các
thực thi không theo dạng luồng (non-threaded execution)

saigonkosao
06-26-2007, 11:46 PM
Vấn đề anh nói cũng đáng tìm hiểu đó :) Bởi vì trong Java cũng có ArrayList :))

Không biết ArrayList trong C# có giống bên java hay không nhưng em tìm được cái sự khác biệt
giữa Vector và ArrayList trong Java, mọi người tham khảo cho ý kiến nhé:

Vector vs ArrayList

- Cùng nằm trong gói java.util, và về cơ bản là chúng giống nhau.


java.util
Class Vector

java.lang.Object (http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html)
http://java.sun.com/j2se/1.4.2/docs/api/resources/inherit.gifjava.util.AbstractCollection
(http://java.sun.com/j2se/1.4.2/docs/api/java/util/AbstractCollection.html)
http://java.sun.com/j2se/1.4.2/docs/api/resources/inherit.gifjava.util.AbstractList
(http://java.sun.com/j2se/1.4.2/docs/api/java/util/AbstractList.html)
http://java.sun.com/j2se/1.4.2/docs/api/resources/inherit.gifjava.util.Vector
java.util
Class ArrayList

java.lang.Object (http://java.sun.com/j2se/1.4.2/docs/api/java/lang/Object.html)
http://java.sun.com/j2se/1.4.2/docs/api/resources/inherit.gifjava.util.AbstractCollection
(http://java.sun.com/j2se/1.4.2/docs/api/java/util/AbstractCollection.html)
http://java.sun.com/j2se/1.4.2/docs/api/resources/inherit.gifjava.util.AbstractList
(http://java.sun.com/j2se/1.4.2/docs/api/java/util/AbstractList.html)
http://java.sun.com/j2se/1.4.2/docs/api/resources/inherit.gifjava.util.ArrayList - Vector tối ưu các
thực thi theo dạng luồng (Threaded execution) còn ArrayList tối ưu các
thực thi không theo dạng luồng (non-threaded execution)

Mình giải thích thêm đoạn bạn viết ở trên (thread and non-thread execution):

Methods in Vector are synchronised which means they are thread-safe and thus preclude access
to the Vector elements by concurrent threads.But this imposes additional overhead on the JVM
as it has to acquire and release locks on the vector objects under consideration.

This is not possible in ArrayList since those methods are not synchronised and hence are faster in
performance.

Use Vector only if it will be accessed by multiple threads at a time else ArrayList is always
better.

Ngoài ra còn có 1 số điểm khác như : nếu input object vô arr or vec vượt quá size thì arr mở rộng
50 % còn vec mở rộng 200 %...,Arraylist don't define any increment size while vector does.

You might also like