Java vector的詳解及實(shí)例
Vector 可實(shí)現(xiàn)自動(dòng)增長(zhǎng)的對(duì)象數(shù)組。
java.util.vector提供了向量類(vector)以實(shí)現(xiàn)類似動(dòng)態(tài)數(shù)組的功能。在Java語(yǔ)言中沒(méi)有指針的概念,但如果正確靈活地使用指針又確實(shí)可以大大提高程序的質(zhì)量。比如在c,c++中所謂的“動(dòng)態(tài)數(shù)組”一般都由指針來(lái)實(shí)現(xiàn)。為了彌補(bǔ)這個(gè)缺點(diǎn),Java提供了豐富的類庫(kù)來(lái)方便編程者使用,vector類便是其中之一。事實(shí)上,靈活使用數(shù)組也可以完成向量類的功能,但向量類中提供大量的方法大大方便了用戶的使用。
創(chuàng)建了一個(gè)向量類的對(duì)象后,可以往其中隨意插入不同類的對(duì)象,即不需顧及類型也不需預(yù)先選定向量的容量,并可以方便地進(jìn)行查找。對(duì)于預(yù)先不知或者不愿預(yù)先定義數(shù)組大小,并且需要頻繁地進(jìn)行查找,插入,刪除工作的情況??梢钥紤]使用向量類。
向量類提供了三種構(gòu)造方法:
public vector() public vector(int initialcapacity,int capacityIncrement) public vector(int initialcapacity)
使用第一種方法系統(tǒng)會(huì)自動(dòng)對(duì)向量進(jìn)行管理,若使用后兩種方法。則系統(tǒng)將根據(jù)參數(shù),initialcapacity設(shè)定向量對(duì)象的容量(即向量對(duì)象可存儲(chǔ)數(shù)據(jù)的大小),當(dāng)真正存放的數(shù)據(jù)個(gè)數(shù)超過(guò)容量時(shí)。系統(tǒng)會(huì)擴(kuò)充向量對(duì)象存儲(chǔ)容量。
參數(shù)capacityincrement給定了每次擴(kuò)充的擴(kuò)充值。當(dāng)capacityincrement為0的時(shí)候,則沒(méi)次擴(kuò)充一倍,利用這個(gè)功能可以優(yōu)化存儲(chǔ)。在Vector類中提供了各種方法方便用戶的使用:
插入功能:
(1)public final synchronized void adddElement(Object obj)
將obj插入向量的尾部。obj可以是任何類型的對(duì)象。對(duì)同一個(gè)向量對(duì)象,亦可以在其中插入不同類的對(duì)象。但插入的應(yīng)是對(duì)象而不是數(shù)值,所以插入數(shù)值時(shí)要注意將數(shù)組轉(zhuǎn)換成相應(yīng)的對(duì)象。
例如:要插入整數(shù)1時(shí),不要直接調(diào)用v1.addElement(1),正確的方法為:
Vector v1 = new Vector(); Integer integer1 = new Integer(1); v1.addElement(integer1);
(2)public final synchronized void setElementAt(Object obj,int index)
將index處的對(duì)象設(shè)置成obj,原來(lái)的對(duì)象將被覆蓋。
(3)public final synchronized void insertElement(Object obj,int index)
在index指定的位置插入obj,原來(lái)對(duì)象以及此后的對(duì)象依次往后順延。
刪除功能:
(1)public final synchronized void removeElement(Object obj)
從向量中刪除obj,若有多個(gè)存在,則從向量頭開(kāi)始試,刪除找到的第一個(gè)與obj相同的向量成員。
(2)public final synchronized void removeAllElement();
刪除向量所有的對(duì)象
(3)public fianl synchronized void removeElementAt(int index)
刪除index所指的地方的對(duì)象
查詢搜索功能:
(1)public final int indexOf(Object obj)
從向量頭開(kāi)始搜索obj,返回所遇到的第一個(gè)obj對(duì)應(yīng)的下標(biāo),若不存在此obj,返回-1.
(2)public final synchronized int indexOf(Object obj,int index)
從index所表示的下標(biāo)處開(kāi)始搜索obj.
(3)public final int lastindexOf(Object obj)
從向量尾部開(kāi)始逆向搜索obj.
(4)public final synchornized int lastIndex(Object obj,int index)
從index所表示的下標(biāo)處由尾至頭逆向搜索obj.
(5)public final synchornized firstElement()
獲取向量對(duì)象中的首個(gè)obj
(6)public final synchornized Object lastElement()
獲取向量對(duì)象的最后一個(gè)obj
例子:VectorApp.Java
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);
//加入為字符串對(duì)象
v1.addElement("one");
//加入的為integer的對(duì)象
v1.addElement(integer1);
v1.addElement(integer1);
v1.addElement("two");
v1.addElement(new Integer(2));
v1.addElement(integer1);
v1.addElement(integer1);
//轉(zhuǎn)為字符串并打印
System.out.println("The Vector v1 is:\n\t"+v1);
//向指定位置插入新對(duì)象
v1.insertElement("three",2);
v1.insertElement(new Float(3.9),3);
System.out.println("The Vector v1(used method
insertElementAt()is:\n\t)"+v1);
//將指定位置的對(duì)象設(shè)置為新的對(duì)象
//指定位置后的對(duì)象依次往后順延
v1.setElementAt("four",2);
System.out.println("The vector v1 cused method setElmentAt()is:\n\t"+v1);
v1.removeElement(integer1);
//從向量對(duì)象v1中刪除對(duì)象integer1
//由于存在多個(gè)integer1,所以從頭開(kāi)始。
//找刪除找到的第一個(gè)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)的方法取得向量對(duì)象的每個(gè)元素。
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));
//按不同的方向查找對(duì)象integer1所處的位置
v1.setSize(4);
System.out.println("The new Vector(resized the vector)is:"+v1);
//重新設(shè)置v1的大小,多余的元素被拋棄
}
}
運(yùn)行結(jié)果:
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]
(1)類vector定義了方法
public final int size();
此方法用于獲取向量元素的個(gè)數(shù)。它們返回值是向量中實(shí)際存在的元素個(gè)數(shù),而非向量容量??梢哉{(diào)用方法capacity()來(lái)獲取容量值。
方法:
public final synchronized void setsize(int newsize);
此方法用來(lái)定義向量的大小,若向量對(duì)象現(xiàn)有成員個(gè)數(shù)已經(jīng)超過(guò)了newsize的值,則超過(guò)部分的多余元素會(huì)丟失。
(2)程序中定義Enumeration類的一個(gè)對(duì)象Enumeration是java.util中的一個(gè)接口類,
在Enumeration中封裝了有關(guān)枚舉數(shù)據(jù)集合的方法。
在Enumeration提供了方法hasMoreElement()來(lái)判斷集合中是否還有其他元素和方法nextElement()來(lái)判斷集合中是否還有其他
元素和方法nextElement()來(lái)獲取下一個(gè)元素。利用這兩個(gè)方法,可以依次獲得集合中的元素。
Vector中提供方法:
public final synchronized Enumeration elements();
此方法將向量對(duì)象對(duì)應(yīng)到一個(gè)枚舉類型。java.util包中的其他類中也都有這類方法,以便于用戶獲取對(duì)應(yīng)的枚舉類型。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
相關(guān)文章
MyBatisPlus分頁(yè)時(shí)排序的實(shí)現(xiàn)
本文主要介紹了MyBatisPlus分頁(yè)時(shí)排序的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03
解決java.net.SocketTimeoutException: Read timed out的問(wèn)題
這篇文章主要介紹了解決java.net.SocketTimeoutException: Read timed out的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
Java強(qiáng)制類型轉(zhuǎn)換原理詳解(父類轉(zhuǎn)子類、子類轉(zhuǎn)父類)
這篇文章主要給大家介紹了關(guān)于Java強(qiáng)制類型轉(zhuǎn)換原理(父類轉(zhuǎn)子類、子類轉(zhuǎn)父類)的相關(guān)資料,所謂的強(qiáng)制類型轉(zhuǎn)換,其實(shí)是自動(dòng)類型轉(zhuǎn)換的逆過(guò)程,在數(shù)據(jù)類型兼容的情況下,將容量大的數(shù)據(jù)類型轉(zhuǎn)換為容量小的數(shù)據(jù)類型,需要的朋友可以參考下2023-12-12
Java線程池FutureTask實(shí)現(xiàn)原理詳解
這篇文章主要介紹了Java線程池FutureTask實(shí)現(xiàn)原理詳解,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-02-02
Java實(shí)用工具庫(kù)commons-lang3的使用
Apache?Commons?Lang?3是一個(gè)流行的Java實(shí)用工具庫(kù),提供了對(duì)java.lang包的擴(kuò)展,包括字符串操作、正則表達(dá)式處理、數(shù)字操作、日期和時(shí)間操作、隨機(jī)字符串生成和對(duì)象操作等功能2025-03-03
Spring?Boot項(xiàng)目如何使用Maven打包并帶上依賴
在這篇博客中,介紹如何使用Maven將Spring?Boot項(xiàng)目及其依賴項(xiàng)打包成一個(gè)可執(zhí)行的jar文件。我們將使用Spring?Boot的spring-boot-maven-plugin插件來(lái)完成這個(gè)任務(wù),感興趣的朋友跟隨小編一起看看吧2023-06-06
SpringBoot監(jiān)控Tomcat活動(dòng)線程數(shù)來(lái)判斷是否完成請(qǐng)求處理方式
這篇文章主要介紹了SpringBoot監(jiān)控Tomcat活動(dòng)線程數(shù)來(lái)判斷是否完成請(qǐng)求處理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-02-02
JAVA校驗(yàn)之@Valid和@Validated實(shí)踐指南
在Java開(kāi)發(fā)中參數(shù)校驗(yàn)是保障程序健壯性的重要手段,@Valid和@Validated是兩個(gè)常用的校驗(yàn)注解,但它們?cè)谑褂脠?chǎng)景、驗(yàn)證方式和嵌套處理等方面存在顯著差異,這篇文章主要介紹了JAVA校驗(yàn)之@Valid和@Validated的相關(guān)資料,需要的朋友可以參考下2025-07-07
springsecurity記住我登錄時(shí)訪問(wèn)無(wú)權(quán)限接口跳轉(zhuǎn)登錄界面的處理方案
這篇文章主要介紹了springsecurity記住我登錄時(shí)訪問(wèn)無(wú)權(quán)限接口跳轉(zhuǎn)登錄界面的處理方案,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2024-02-02

