激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java中的vector類使用方法示例詳解

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

2020-09-13 12:07wbb Java教程

這篇文章主要介紹了Java vector類的使用詳解及實例的相關資料,需要的朋友可以參考下

 基本操作示例

VectorApp.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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的大小,多余的元素被拋棄
 }
}

運行結果:

?
1
2
3
4
5
6
7
8
9
10
11
12
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每次擴容為元數組的0.5倍不?Vector在進行擴容操作時與ArrayList略微不同

?
1
2
3
4
5
6
7
8
9
10
11
12
protected int capacityIncrement;//用于指定每次擴容的容量
private void grow(int minCapacity) {
 // overflow-conscious code
 int oldCapacity = elementData.length;
 int newCapacity = oldCapacity + ((capacityIncrement > 0) ?
   capacityIncrement : oldCapacity);//如不指定capacityIncrement,默認擴容的容量為原數組的容量
 if (newCapacity - minCapacity < 0)
 newCapacity = minCapacity;
 if (newCapacity - MAX_ARRAY_SIZE > 0)
 newCapacity = hugeCapacity(minCapacity);
 elementData = Arrays.copyOf(elementData, newCapacity);
}

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

線程安全

Vertor是線程安全的!

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
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);
 }
}

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

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

原文鏈接:http://www.2cto.com/kf/201605/511067.html

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 电影一级毛片 | 男女羞羞在线观看 | 欧洲色阁中文字幕 | 一级毛片真人免费播放视频 | 成人影片在线免费观看 | 一区二区三区欧洲 | 国产在线精品一区二区不卡 | 欧美日本在线视频 | 成人做爰高潮片免费视频美国 | 99久久久 | 国产午夜精品久久久久 | 欧美一级网 | 亚洲精品一区中文字幕 | 亚洲一区免费电影 | 蜜桃一本色道久久综合亚洲精品冫 | www.com超碰| 一区二区三区日韩在线 | a级高清免费毛片av在线 | 一区二区免费看 | 久久久久久久久久久久久久久伊免 | 国产无遮挡成人免费视频 | 伦一区二区三区中文字幕v亚洲 | av在线看网站| 黄色成人av在线 | 久久精品在这里 | 国产一区二区三区在线观看视频 | 国产一国产精品一级毛片 | 国产亚洲综合精品 | 精品视频一区二区三区四区 | 欧美 日韩 亚洲 中文 | 毛片中文字幕 | 美国黄色小视频 | 国产精品99爱| 久久免费激情视频 | 国产精品毛片无码 | 91在线视频精品 | av在线观 | 日本在线不卡一区二区 | 国产精品亚洲综合一区二区三区 | av免费在线播放 | 精品在线视频播放 |