Professional Documents
Culture Documents
Vecto
Vecto
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;
// 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
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.
import java.util.Vector;
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;
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
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
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.