javavector源碼
① java中的vector 是什麼意思呢
java中vector和數據非常類似,兩者之間也經常成對出現,下面是兩者的比較:
1、數組:java arrays的元素個數不能下標越界,從很大程度上保證了java程序的安全性,但創建時必須指定數組的大小,並不能再改變。
2、vector:對比於array,當更多的元素被加入進來以至超出其容量時,vector的size會動態增長,而array容量是定死的。同時,vector在刪除一些元素後,其所有下標大於被刪除元素的元素都依次前移,並獲得新下標比原來的小了)。
② list和vector的contains方法源碼相同,輸出怎麼不同呢
可能是 底層實現機制不同 vector的是 自增長的數組 而list則是雙向鏈表
③ JAVA 中怎樣用 Vector 做一個循環隊列
import java.util.Random;
public class VQ<T> {
java.util.Vector<T> eles;
int p=0,q=0;
public VQ(int size){
init(size);
}
private void init(int size) {
eles=new java.util.Vector<T>(size);
eles.setSize(size);
}
public VQ(){
init(16);
}
public boolean empty(){
return p==q;
}
public boolean full(){
return ((p+1)%eles.size())==q;
}
public T pop_front(){
assert !empty();
T ret= eles.get(q);
++q;
q%=eles.size();
return ret;
}
public void push_back(T v){
if(!full()){
eles.set(p, v);
++p;
p%=eles.size();
return;
}
VQ<T> tmp=new VQ<T>(eles.size()*2);
while(!empty()){
tmp.push_back(pop_front());
}
eles=tmp.eles;
p=tmp.p;
q=tmp.q;
push_back(v);
}
/**
* @param args
*/
public static void main(String[] args) {
VQ<Integer> t=new VQ<Integer>();
for(int i=0;i!=100;++i){
if(Math.random()>0.3||t.empty()){
t.push_back(i);
}else{
System.out.print(t.pop_front()+",");
}
}
while(!t.empty()){
System.out.print(t.pop_front()+",");
}
}
}
④ Java中的Vector是什麼意思
vector與數組類似,但能被擴大和縮小。
向量與數組的區別:
1、Java的數組可存儲任何類型的數組元素,包括數值類型和所有類類型
2、Java向量只能存儲對象類的實例。
向量能重定位和調整自己的容量。預設時,向量重定位一次,其容量就擴大一倍,呈指數增長,所以應指定容量增量,做為向量構造函數的第二個參數,來創建向量:
Vector itemsOrdered = new Vector(3.10);這樣向量每重定位一次,其容量都增加10個元素。
v.size()返迴向量中的元素個數,等價於 arry.length();
如果向量已達到其永久大小,則可調用tirmToSize 方法,將內存塊大小調整到剛好能容納當前個數的向量元素
向量中不能用方便的[]句法,而必須用elementAt 和setSlementAt 方法來訪問或修改元素。
數組:x = a[i](訪問) a[i] = x;(修改)
向量:x = v.elementAt(i) v.SetElementAt(x.i)
⑤ java如何判斷兩個Vector 是否相等一定要循環么 Vector有沒有現成的方法
剛才看 Vector.equals() 源碼,次序要一樣才會相等,如果放進去的次序不一樣,也不會相等的。
附: 源碼:
public boolean equals(Object o) {
if (o == this)
return true;
if (!(o instanceof List))
return false;
ListIterator<E> e1 = listIterator();
ListIterator e2 = ((List) o).listIterator();
while(e1.hasNext() && e2.hasNext()) {
E o1 = e1.next();
Object o2 = e2.next();
if (!(o1==null ? o2==null : o1.equals(o2)))
return false;
}
return !(e1.hasNext() || e2.hasNext());
}
⑥ Java中Vector的定義
Vector 可實現自動增長的對象數組。
java.util.vector提供了向量類(vector)以實現類似動態數組的功能。在Java語言中沒有指針的概念,但如果正確靈活地使用指針又確實可以大大提高程序的質量。比如在c,c++中所謂的「動態數組」一般都由指針來實現。為了彌補這個缺點,Java提供了豐富的類庫來方便編程者使用,vector類便是其中之一。事實上,靈活使用數組也可以完成向量類的功能,但向量類中提供大量的方法大大方便了用戶的使用。
創建了一個向量類的對象後,可以往其中隨意插入不同類的對象,即不需顧及類型也不需預先選定向量的容量,並可以方便地進行查找。對於預先不知或者不願預先定義數組大小,並且需要頻繁地進行查找,插入,刪除工作的情況。可以考慮使用向量類。
向量類提供了三種構造方法:
public vector()
public vector(int initialcapacity,int capacityIncrement)
public vector(int initialcapacity)
舉例說明:
import java.util.Vector;
import java.lang.*;
import java.util.Enumeration;
public class VectorApp
{
public static void main(String args[])
{
Vector v1 = new Vector();
Integer integer1= new Integer(1);
//加入為字元串對象
v1.addElement("one");
//加入的為integer的對象
v1.addElement(integer1);
v1.addElement(integer1);
v1.addElement("two");
v1.addElement(new Integer(2));
v1.addElement(integer1);
v1.addElement(integer1);
//轉為字元串並列印
System.out.println("The Vector v1 is:\n\t"+v1);
//向指定位置插入新對象
v1.insertElement("three",2);
v1.insertElement(new Float(3.9),3);
System.out.println("The Vector v1(used method
insertElementAt()is:\n\t)"+v1);
//將指定位置的對象設置為新的對象
//指定位置後的對象依次往後順延
v1.setElementAt("four",2);
System.out.println("The vector v1 cused method setElmentAt()is:\n\t"+v1);
v1.removeElement(integer1);
//從向量對象v1中刪除對象integer1
//由於存在多個integer1,所以從頭開始。
//找刪除找到的第一個integer1.
Enumeration enum = v1.elements();
System.out.println("The vector v1 (used method removeElememt()is");
while(enum.hasMoreElements())
System.out.println(enum.nextElement()+"");
System.out.println();
//使用枚舉類(Enumeration)的方法取得向量對象的每個元素。
System.out.println("The position of Object1(top-to-botton):"+v1.indexOf(integer1));
System.out.println("The position of Object1(tottom-to-top):"+v1.lastIndexOf(integer1));
//按不同的方向查找對象integer1所處的位置
v1.setSize(4);
System.out.println("The new Vector(resized the vector)is:"+v1);
//重新設置v1的大小,多餘的元素被拋棄
}
}
運行結果:
運行結果:
E:\java01>java VectorApp
The vector v1 is:[one,1,1,two,2,1,1]
The vector v1(used method insetElementAt()) is:
[one,1,three,3.9,1,two,2,1,1]
The vector v1(used method setElementAt()) is:
[one,1,four,3.9,1,two,2,1,1]
The vector v1(useed method removeElement()) is:
one four 3.9 1 two 2 1 1
The position of object1(top-to-botton):3
The position of object1(botton-to-top):7
The new Vector(resized the vector) is:
[one,four,3.9,1]
⑦ java對vector動態數組中的對象排序,以下代碼有何問題,如何修改
package com.tx.collection;
import java.util.Comparator;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.Vector;
public class Student {
String name;
int score;
public Student(String n, int s) {
name = n;
score = s;
}
public boolean equals(Object o) {
Student other = (Student) o;
return other.score == score;
}
public String toString() {
return name + "," + score;
}
public static void main(String[] args) {
Vector<Student> stu = new Vector<Student>();
stu.add(new Student("張三", 90));
stu.add(new Student("李四", 80));
stu.add(new Student("小明", 85));
stu.add(new Student("王五", 60));
stu.add(new Student("何六", 70));
Student index = new Student("", 60);
int t = stu.indexOf(index);
System.out.println("成績為60的學生姓名為" + stu.elementAt(t).name);
Set<Student> set = new TreeSet(new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
if (o1.score > o2.score)
return -1;
else if (o1.score < o2.score)
return 1;
else
return 0;
}
});
set.addAll(stu);
Iterator<Student> iterator = set.iterator();
while(iterator.hasNext()){
Student s = iterator.next();
System.out.println(s.name+":"+s.score);
}
}
}
⑧ java中vector是什麼
Vector是一個數組,與ArrayList最大的區別是Vector當成員超出范圍它自增長時每次自增長自身長度的一倍。而ArrayList每次自增長自身長度的一半。
⑨ java中的Vector
vector和arraylist都是差不多的,會用arraylist就可以用vector,但是arraylist速度比它快,但是如果涉及到多線程,就用vector,例子演示直接看文檔,或者網上查一下,寫了也是廢話,第二不就是容器嗎,一個vector里有一堆裝著string的vector,用法一樣,就是多了個容器,會有類型檢查,其他類型的放不就去