1. 程式人生 > >Java——陣列、向量(Vector)詳解

Java——陣列、向量(Vector)詳解

陣列

一維陣列初始化方式:
1. int []arr=new int[5]; 和int arr[] = new int[5];效果是一樣的,不過開發中推薦前者。
2. int[]arr = new int[]{3,5,1,7};或者簡化為int []arr = {3,5,1,7};

二維陣列定義方式

//直接為每一維分配空間
int a[][] = new int[2][3];
//依次為每一維分配空間
int a[][] = new int[2][];
a[0] = new int[3];
a[1] = new int[3];

這一點在c和c++中是不同的。在c和c++中必須一次指明每一維的長度。

二維陣列初始化方式

: (1)直接對每個元素進行賦值; (2)在定義陣列的同時進行初始化。如:
int a[][]={{2,3},{1,5},{3,4}};
//a陣列的行和列的個數可以通過length求得
a.length = 3;
a[i].length = 2;

向量(Vector)

Vector和陣列非常類似,但是它可以儲存多個物件,並且可以根據索引值來檢索這些物件。陣列和Vector的最大區別就是當空間用完以後,Vector會自動增長。同時Vector還提供了額外的方法來增加或者刪除元素,而在陣列中,必須手工完成。

Vector的三種構造方法

(1)public Vector();建立一個空的Vector;
(2)public Vector(int initialcapacity);建立一個Vector,其初始化大小為initial capacity.
(3)public Vector(int initialcapacity,int capacityIncrement);
建立一個Vector,其初始化大小為initial capacity,當Vector需要增長時,其增長速度由capacityIncrement決定。
注意

:如果增長的速度不指定,那麼Vector會將其空間增加一倍。當Vector很大的時候,這可能導致系統性能下降以及其他問題,建議設定具體的增長速度。

Vector中的幾種查詢函式

(1)public final int indexOf(Object obj)
從向量頭開始搜尋obj,返回所遇到的第一個obj對應的下標,若不存在此obj,返回-1.
(2)public final synchronized int indexOf(Object obj,int startindex) throws ArrayIndexOutOfBoundsException;
從startindex所表示的下標處開始搜尋obj在Vector中第一次出現的位置,沒有找到就返回-1.
(3)public final int lastindexOf(Object obj)
返回Vector中物件obj最後一次出現的位置,否則返回-1
(4)public final synchornized int lastIndexOf(Object obj,int index)throws ArrayIndexOutOfBoundsException;
從index所表示的下標處由尾至頭逆向搜尋obj.
(5)public final synchornized firstElement()
獲取向量物件中的首個obj
(6)public final synchornized Object lastElement()
獲取向量物件的最後一個obj
(7)public final boolean contains(Object ob);
查詢一個物件是否在一個Vector中,只要出現一次ob指定的物件就返回true,否則返回false。

Vector中的增加和移除和改變大小操作

插入
(1)public final synchronized void adddElement(Object obj)

將obj插入向量的尾部。obj可以是任何型別的物件。對同一個向量物件,亦可以在其中插入不同類的物件。但插入的應是物件而不是數值,所以插入數值時要注意將陣列轉換成相應的物件。
例如:要插入整數1時,不要直接呼叫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)throws ArrayIndexOutOfBoundsException;

將index處的物件設定成obj,原來的物件將被覆蓋。

(3)public final synchronized void insertElementAt(Object obj,int index)throws ArrayIndexOutOfBoundsException;
在index指定的位置插入obj,原來物件以及此後的物件依次往後順延.如果該位置不存在則丟擲一個ArrayIndexOutOfBoundsException異常。

移除
(1)public final synchronized boolean removeElement(Object obj)
移走一個特定的物件obj,如果物件在Vector中出現多次,只移走第一次出現的物件。成功返回true,否則返回false。
(2)public final synchronized void removeAllElement();
刪除向量所有的物件
(3)public fianl synchronized void removeElementAt(int index) throws ArrayIndexOutOfBoundsException;
刪除index所指的地方的物件 ,並移動其他物件來填充移走物件的空隙。如果試圖從一個不存在的位置移走物件,則會丟擲ArrayIndexOutOfBoundsException異常。
改變大小的操作
Vector有兩種大小的概念,當前儲存的元素的個數(size)和Vector的最大容量(capacity);

//capacity方法告訴使用者Vector能容納多少個物件。
public final int capacity();
//ensureCapacity方法可以增加Vector的大小
public final synchronized void ensureCapacity(int minimumCapacity);
/*告訴Vector至少能儲存minimumCapacity個元素,如果Vector的當前容量比minumunCapacity的 小,將分配給Vector更多的空間;如果Vector的當前空間比minimumCapacity大,Vector也不會減少當前空間。*/

如果要減少Vector的容量,可以使用trimToSize方法:

public final synchronized void trimTosize();
//該方法將Vector的容量減少至當前儲存的元素的個數。
public final int size();
//該方法告訴Vector中當前含有多少個物件:
public synchronized final void setSize(int newSize);
//該方法用於改變當前元素的個數,如果新尺寸小於原尺寸,則新尺寸以後的Vector中原有的元素將丟失;如果新尺寸大於原來的尺寸,,則新增加的元素的值會被置為null。

相關推薦

Java——陣列向量Vector

陣列 一維陣列初始化方式: 1. int []arr=new int[5]; 和int arr[] = new int[5];效果是一樣的,不過開發中推薦前者。 2. int[]arr = new int[]{3,5,1,7};或者簡化為int []a

向量vector

數組 抽象數據類型 實現 find 組元 pan 結構 遞增 線性 1.接口與實現 1.1 抽象數據類型:一組數據模型上定義的一組操作 數據類型是(char、int等) 數據結構:基於特定語言的,實現ADT的一整套算法。 1.2 向量:向量是數組的抽象與泛化,由一組元

Silverlight & Blend動畫設計系列十:Silverlight中的坐標系統Coordinate System向量Vector運動

過度 highlight 圖片 nbsp mgr ack jpg .com bsp 原文:Silverlight & Blend動畫設計系列十:Silverlight中的坐標系統(Coordinate System)與向量(Vector)運動  如果我們習慣於數學坐

圖的儲存結構鄰接矩陣鄰接表十字連結串列鄰接多重表

上篇部落格講到,圖狀結構是非常複雜的結構,圖也是非常複雜的,所以圖的儲存就是一個非常重要的部分,因為我們不僅要表示頂點集,還要表示邊集,如何完整準確的表示圖呢,接下來,給大家講解四種圖的儲存方式。 一、鄰接矩陣法 1、定義 我們用一個二維陣列存放頂點間關係(邊或弧)的資料,這個二維陣

【C++】向量vector 基本使用方法及注意事項

介紹: 向量(Vector)是一個封裝了動態大小陣列的順序容器(Sequence Container)。跟任意其它型別容器一樣,它能夠存放各種型別的物件。可以簡單的認為,向量是一個能夠存放任意型別的動態陣列。 特點: 1.順序序列 順序容器中的元素按照嚴格的線性順序排序。可以通過元素

Java Memory Model JMM

Java記憶體模型即Java Memory Model,簡稱JMM。JMM定義了Java 虛擬機器(JVM)在計算機記憶體(RAM)中的工作方式。JVM是整個計算機虛擬模型,所以JMM是隸屬於JVM的。 如果我們要想深入瞭解Java併發程式設計,就要先理解好Java記憶體模

C++ 向量vector

1. vector介紹 向量 vector 是一種物件實體, 能夠容納許多其他型別相同的元素, 因此又被稱為容器。 與string相同, vector 同屬於STL(Standard Template Library, 標準模板庫)中的一種自定義的資料型別, 可以廣義上認為是

Java實現的SFTP檔案下載

上一篇講述了使用JSch實現檔案上傳的功能,這一篇主要講述一下JSch實現檔案下載的功能。並介紹一些SFTP的輔助方法,如cd,ls等。 同樣,JSch的檔案下載也支援三種傳輸模式:OVERWRITE, RESUME和APPEND,請參考上篇隨筆:JSch - Ja

java 深克隆深拷貝與淺克隆拷貝

java深克隆和淺克隆 基本概念 淺複製(淺克隆) 被複制物件的所有變數都含有與原來的物件相同的值,而所有的對其他物件的引用仍然指向原來的物件。換言之,淺複製僅僅複製所拷貝的物件,而不復制它所引用的物件。 深複製(深克隆) 被複制物件的所有變數都含有與原來的物

磁碟陣列Raid

一. JBOD JBOD ( Just a Bunch Of Disks )不是標準的 RAID 等級,它通常用來表示一個沒有控制軟體提供協調控制的磁碟集合。 JBOD 將多個物理磁碟串聯起來,提供一個巨大的邏輯磁碟。 JBOD (如圖 1 )的資料存放機制是由第一塊磁碟開始按順序往後儲

java提高篇-----匿名內部類

       在java提高篇-----詳解內部類中對匿名內部類做了一個簡單的介紹,但是內部類還存在很多其他細節問題,所以就衍生出這篇部落格。在這篇部落格中你可以瞭解到匿名內部類的使用、匿名內部類要注

java提高篇-----內部類

      可以將一個類的定義放在另一個類的定義內部,這就是內部類。        內部類是一個非常有用的特性但又比較難理解使用的特性(鄙人到現在都沒有怎麼使用過內部類,對內部類也只是略知一二)。

堆樹最大堆最小堆

一、堆樹的定義 堆樹的定義如下: (1)堆樹是一顆完全二叉樹; (2)堆樹中某個節點的值總是不大於或不小於其孩子節點的值; (3)堆樹中每個節點的子樹都是堆樹。 當父節點的鍵值總是大於或等於任何一個

Java 覆寫Override

一、覆寫概念 既然現在出現了繼承的關係,那麼就存在了子類和父類的聯絡,而在子類之中有可能定義和父類完全相同的方法或屬性的名稱,這個時候就稱為覆寫了。 二、方法的覆寫 當子類定義了和父類在方法名稱、返回值型別、引數型別及個數完全相同的方法的時候,稱為方法的覆

機器學習--支援向量徑向基核函式RBF

前面講解了什麼是核函式,以及有效核函式的要求,到這裡基本上就結束了,很多部落格也是如此,但是呢這些只是理解支援向量機的原理,如何使用它講解的卻很少,尤其是如何選擇核函式更沒有人講,不講也是有原因的,因為核函式的選擇沒有統一的定論,這需要使用人根據不同場合或者不同問題選擇核函式

Java 繼承extends

一、繼承問題的引出 繼承性是面向物件的第二大主要特徵。 下面首先編寫兩個程式:Person類、Student類。 Person類: class Person { private String name ; priv

短實習---Java介面關鍵字練習題

1.在停車場收費系統中,收費者會根據車型的不同收取不同的停車費,其中:客車:15/小時  貨車:12/小時   轎車:8/小時  編寫Java程式完成此功能(多型的應用) //建立停車類 public class Parker{ String car; double tim

壓力測試工具Web效能壓力測試工具ApacheBenchab

網站效能壓力測試是效能調優過程中必不可少的一環。只有讓伺服器處在高壓情況下才能真正體現出各種設定所暴露的問題。Apache中有個自帶的,名為ab的程式,可以對Apache或其它型別的伺服器進行網站訪問壓力測試。 ApacheBench命令原理: ab命令會建立很

json字串轉陣列物件json_decode

使用php開發的過程中避免不了使用到json格式,然而,很多時候為了方便資料的使用需要使用php把json格式的字串轉換為物件或者陣列,強大的PHP提供了內建的函式,json_decode()函式可以將

【半小時大話.net依賴注入】AutoFac+實戰MvcApi以及.NET Core的依賴注入

系列目錄 第一章|理論基礎+實戰控制檯程式實現AutoFac注入 第二章|AutoFac的使用技巧 第三章|實戰Asp.Net Framework Web程式實現AutoFac注入 第四章|實戰Asp.Net Core自帶DI實現依賴注入 第五章|實戰Asp.Net Core引入AutoFac的兩種方式