最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java中的vector類使用方法示例詳解

 更新時間:2017年04月18日 10:59:43   投稿:wbb  
這篇文章主要介紹了Java vector類的使用詳解及實例的相關資料,需要的朋友可以參考下

 基本操作示例

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); 
 //加入為字符串對象 
 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] 

Vertor的1倍擴容

還記得ArrayList每次擴容為元數(shù)組的0.5倍不?Vector在進行擴容操作時與ArrayList略微不同

protected int capacityIncrement;//用于指定每次擴容的容量
private void grow(int minCapacity) {
 // overflow-conscious code
 int oldCapacity = elementData.length;
 int newCapacity = oldCapacity + ((capacityIncrement > 0) ?
   capacityIncrement : oldCapacity);//如不指定capacityIncrement,默認擴容的容量為原數(shù)組的容量
 if (newCapacity - minCapacity < 0)
 newCapacity = minCapacity;
 if (newCapacity - MAX_ARRAY_SIZE > 0)
 newCapacity = hugeCapacity(minCapacity);
 elementData = Arrays.copyOf(elementData, newCapacity);
}

細心的小伙伴可以發(fā)現(xiàn)Vector中多了一個capacityIncrement變量,該變量是用于指定每次擴容的增量,如果不指定該變量,在grow中可以發(fā)現(xiàn)Vector默認就擴容為原數(shù)組的1倍

線程安全

Vertor是線程安全的!

Vertor源碼中另一個比較顯眼的地方就是絕大部分方法都有synchronized關鍵字,大家都知道這個關鍵字是用于線程同步的,所以Vector類是線程安全的!

但是即使它所有的方法都被修飾成同步,也不意味著調用它的時候永遠都不需要同步手段了:

private static Vector<Integer> vector=new Vector<Integer>();
public static void main(String[] args) { 
 while(true)
 {
 for(int i=0;i<10;i++)
 {
 vector.add(i);
 }
 Thread removeThread=new Thread(new Runnable(){
 @Override
 public void run()
 {
 for(int i=0;i<vector.size();i++)
 {
 vector.remove(i);
 }
 }
 });
 Thread printThread=new Thread(new Runnable(){
 @Override
 public void run()
 {
 for(int i=0;i<vector.size();i++)
 {
 System.out.println(vector.get(i));
 }
 }
 }); 
 removeThread.start();
 printThread.start();
 while(Thread.activeCount()>20); 
 }
}

大家運行此段代碼時 跑了一小段時間之后會發(fā)現(xiàn)有ArrayIndexOutOfBoundsException異常,這里Vector的get,remove,size方法盡管有synchronized修飾,但是在多線程環(huán)境中,如果不在方法端額外做同步措施的話,這段代碼仍然是不安全的,如果一個線程刪除了序號i的元素之后,另一個線程去訪問這個i的話就直接回拋異常,所以保證這段代碼安全還需要再run里面再添加synchronized修飾。

希望本篇vector類使用示例文章對您有所幫助

相關文章

  • Java實現(xiàn)讀寫文件功能的代碼分享

    Java實現(xiàn)讀寫文件功能的代碼分享

    這篇文章主要為大家詳細介紹了如何利用Java語言實現(xiàn)讀寫文件功能,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2022-08-08
  • Spring Security基于散列加密方案實現(xiàn)自動登錄功能

    Spring Security基于散列加密方案實現(xiàn)自動登錄功能

    為了提高項目的用戶體驗,我們可以在項目中添加自動登錄功能,當然也要給用戶提供退出登錄的功能。接下來學習下Spring Security基于散列加密方案實現(xiàn)自動登錄功能,一起看看吧
    2021-09-09
  • Java的作業(yè)調度類庫Quartz基本使用指南

    Java的作業(yè)調度類庫Quartz基本使用指南

    這篇文章主要介紹了Java的作業(yè)調度類庫Quartz基本使用指南,Quartz能夠讓類按照指定的計劃順序執(zhí)行,需要的朋友可以參考下
    2016-03-03
  • Java RSA加密解密實現(xiàn)方法分析【附BASE64 jar包下載】

    Java RSA加密解密實現(xiàn)方法分析【附BASE64 jar包下載】

    這篇文章主要介紹了Java RSA加密解密實現(xiàn)方法,結合實例形式分析了java基于第三方類庫javabase64-1.3.1.jar實現(xiàn)RSA加密解密功能的具體步驟與相關操作技巧,需要的朋友可以參考下
    2017-10-10
  • Mybatis-plus的selectPage()分頁查詢不生效問題解決

    Mybatis-plus的selectPage()分頁查詢不生效問題解決

    本文主要介紹了Mybatis-plus的selectPage()分頁查詢不生效問題解決,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-01-01
  • java使用FFmpeg提取音頻的實現(xiàn)示例

    java使用FFmpeg提取音頻的實現(xiàn)示例

    在Java開發(fā)中,我們經(jīng)常會遇到需要使用FFmpeg來處理音視頻文件的情況,本文主要介紹了java使用FFmpeg提取音頻的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • java動態(tài)代理示例分享

    java動態(tài)代理示例分享

    這篇文章主要介紹了java動態(tài)代理示例,需要的朋友可以參考下
    2014-02-02
  • SpringBoot超詳細講解事務管理

    SpringBoot超詳細講解事務管理

    事務的作用就是為了保證用戶的每一個操作都是可靠的,事務中的每一步操作都必須成功執(zhí)行,只要有發(fā)生異常就 回退到事務開始未進行操作的狀態(tài)。事務管理是Spring框架中最為常用的功能之一,我們在使用Spring Boot開發(fā)應用時,大部分情況下也都需要使用事務
    2022-08-08
  • 超個性修改SpringBoot項目的啟動banner的方法

    超個性修改SpringBoot項目的啟動banner的方法

    這篇文章主要介紹了超個性修改SpringBoot項目的啟動banner的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-03-03
  • Java實現(xiàn)經(jīng)典拳皇誤闖冒險島游戲的示例代碼

    Java實現(xiàn)經(jīng)典拳皇誤闖冒險島游戲的示例代碼

    《拳皇誤闖冒險島》是拳皇和冒險島素材的基于JavaSwing的動作類游戲。本文將用Java語言實現(xiàn)這一游戲,需要的小伙伴可以參考一下
    2022-02-02

最新評論

浦县| 岑溪市| 和林格尔县| 乡宁县| 武汉市| 丰镇市| 嫩江县| 稻城县| 商城县| 桐乡市| 河北省| 八宿县| 上饶市| 灯塔市| 仪征市| 晋江市| 斗六市| 新平| 金塔县| 吐鲁番市| 靖西县| 安泽县| 渝中区| 任丘市| 万州区| 西贡区| 庆元县| 神木县| 永城市| 安康市| 方正县| 清水县| 乐昌市| 甘肃省| 康平县| 修武县| 潞城市| 乐清市| 策勒县| 乡宁县| 富裕县|