Java中vector的用法
Vector的使用
vector類底層數組結構的,它包含可以使用整數索引進行訪問的組件。不過,vector的大小可以根據需要增大或縮小,以適應創建vector后進行添加或移除項的操作,因此不需要考慮元素是否越界或者會不會浪費內存的問題。
由vector的iterator和listIterator方法所返回的迭代器是快速失敗的:也即是它不能并發執行操作。如果在迭代器創建后的任意時間從結構上修改了向量(通過迭代器自身的remove或add方法之外的任何其他方式),則迭代器將拋出ConcurrentModificationException。因此,面對并發的修改,迭代器很快就完全失敗,而不是冒著將來不確定的時間任意發生不確定行為的風險。
vector的elements()方法返回的Enumeration不是快速失敗的。
通過代碼說明這個問題:
package cn.list.demo;import java.util.Enumeration; import java.util.Iterator; import java.util.Vector;public class VectorDemo {public static void main(String[] args){Vector v=new Vector();v.addElement("abc1");v.addElement("abc2");v.addElement("abc3");v.addElement("abc4");Enumeration en=v.elements();while(en.hasMoreElements()){Object object=en.nextElement();if(object.equals("abc3")){v.addElement("abc5"); // 不會出現異常}System.out.println(object);}Iterator it=v.iterator();while(it.hasNext()){Object obj=it.next();if(obj.equals("abc3")){v.addElement("abc5");// 會出現異常// 面對并發的修改,迭代器很快就完全失敗!}System.out.println(obj);}} }
Vector的四種構造方法:
1、Vector(); ? ?構造一個空向量,使其內部數據數組的大小為10,其標準容量增量為零。 ? ??Vector vec=new Vector();
2、Vector(Collection c); ? ?構造一個包含指定collection中的元素的向量,這些元素按其collection的迭代器返回元素的順序排列。 ?Vector v=new Vector(vec);
3、Vector(int initialCapacity); ? 使用指定的初始容量和等于零的容量增量構造一個空向量。
4、Vector(int initialCapacity,int capacityIncrement); ? 使用指定的初始容量和容量增量構造一個空的向量。
Vector類中的方法:
1、boolean add(E e); ? ? ? ? ? ? ?將指定的元素添加到此向量的末尾。
2、void addElement(E obj); ? 將指定的組件添加到此向量的末尾,將其大小增加1。
3、void add(int indext,E e); ? ? 在此向量的指定位置插入指定的元素。
4、boolean addAll(Collection c); ? 將指定Collection中的所有元素添加到此向量的末尾,按照指定collection的迭代器所返回的順序添加這些元素。
5、boolean addAll(int index,Collection c); ? 在指定位置將指定Collection中的所有元素插入到此向量中。
6、int ?capacity(); ? ? ? 返回此向量的當前容量。
7、Object clone(); ? ? ?返回向量的一個副本。
8、boolean contains(Object o); ?如果此向量包含指定的元素,怎返回true。
9、boolean containsAll(Collection c); ? 如果此向量包含Collection中的所有元素,則返回true。
10、void copyInto(Object[] anArray); ? ? ? 將此向量的組件復制到指定的數組中。
11、E elementAt(int index); ? ? ? ? 返回指定索引處的組件。
12、Enumeration<E> elements(); ?返回此向量的組件的枚舉。
13、void ensureCapacity(int minCapacity); ? ?增加此向量的容量(如有必要),以確保其至少能夠保證最小容量參數指定的組件數。
14、boolean equals(Object o); ? ? ? 比較指定對象與此向量的相等性。
package cn.list.demo;import java.util.Enumeration; import java.util.Iterator; import java.util.Vector;public class VectorDemo {public static void main(String[] args){Vector v=new Vector();v.addElement("abc1");v.addElement("abc2");v.addElement("abc3");v.addElement("abc4");Vector vec=new Vector();vec.add("abc1");vec.add("abc2");vec.add("abc3");vec.add("abc4");System.out.println(v.equals(vec));} } 15、E firstElement(); ? ? ? ?返回此向量的第一個組件(位于索引0)處的項。package cn.list.demo;import java.util.Enumeration; import java.util.Iterator; import java.util.Vector;public class VectorDemo {public static void main(String[] args){Vector v=new Vector();v.addElement("abc1");v.addElement("abc2");v.addElement("abc3");v.addElement("abc4");System.out.println(v.firstElement());System.out.println(v.firstElement());Vector vec=new Vector();vec.add("aa");vec.add("bb");v.add(0,vec); // 插入第一個位置System.out.println(v.firstElement());System.out.println(v.firstElement());} } 16、E lastelement(); ? ? ?返回此向量的最后一個組件。代碼略。
17、E get(int index); ? ? ? 返回向量中指定位置 的元素。
package cn.list.demo;import java.util.Enumeration; import java.util.Iterator; import java.util.Vector;public class VectorDemo {public static void main(String[] args){Vector v=new Vector();v.addElement("abc1");v.addElement("abc2");v.addElement("abc3");v.addElement("abc4");System.out.println(v.get(0));System.out.println(v.get(3));// 在這里,index值不能小于0,或者大于3} }18、int hashCode(); ? ?返回此向量的哈希碼值。 package cn.list.demo;import java.util.Enumeration; import java.util.Iterator; import java.util.Vector;public class VectorDemo {public static void main(String[] args){Vector v=new Vector();v.addElement("abc1");v.addElement("abc2");v.addElement("abc3");v.addElement("abc4");System.out.println(v.hashCode());} }19、int indexOf(Object o,int index); ? 返回此向量中第一次出現的指定的元素的索引,從index處正向索引,如果未找到該元素,則返回-1.20、int indexOf(Object o); ? ? ? 返回此向量中第一次出現的指定元素的索引,如果此向量不包含該元素,則返回-1。
21、int lastIndexOf(Object o,int index); ? 返回此向量中最后一次出現的指定元素的索引,從index處逆向搜索,如果未找到該元素,則返回-1.
22、int lastIndexOf(Object o); ? ?返回此向量中最后一次出現的指定元素的索引,如果此向量不包含該元素,則返回-1。
24、void clear(); ? ?從此向量中移除所有元素。
package cn.list.demo;import java.util.Enumeration; import java.util.Iterator; import java.util.Vector;public class VectorDemo {public static void main(String[] args){Vector v=new Vector();v.addElement("abc1");v.addElement("abc2");v.addElement("abc3");v.addElement("abc4");v.addElement("abc1");v.addElement("abc2");v.addElement("abc3");v.addElement("abc4");System.out.println(v.isEmpty()); // 非空輸出falsev.clear();System.out.println(v.isEmpty()); // 空輸出true} }25、E remove(int index); ?移除此向量中指定位置的 元素。26、boolean remove(Object o); ?移除此向量中指定元素的第一個匹配項,如果向量不包含該元素,則元素保持不變。
27、boolean removeAll(Collection c); ?從此向量中移除包含在指定Collection中的所有元素。
28、void removeAllElements(); ? 從此向量中移除全部組件,并將其大小設置為零。
29、boolean removeElement(Object obj); ?從此向量中移除變量的第一個(索引最小的)匹配項。
30、void removeElementAt(int index); ? ? ?刪除指定索引處的組件。
package cn.list.demo;import java.util.Enumeration; import java.util.Iterator; import java.util.Vector;public class VectorDemo {public static void main(String[] args){Vector v=new Vector();v.addElement("abc1");v.addElement("abc2");v.addElement("abc3");v.addElement("abc4");v.addElement("abc1");v.addElement("abc2");v.addElement("abc3");v.addElement("abc4");System.out.println(v.removeElement("abc1"));System.out.println(v);Vector vec=new Vector();vec.add("abc4");System.out.println(v.remove(2));System.out.println(v);System.out.println(v.remove("abc2"));System.out.println(v);System.out.println(v.removeAll(vec));System.out.println(v);v.removeAllElements();System.out.println(v);} }31、protected void removeRange(int fromIndex,int toIndex); ? 從此list中移除位于formIndex(包括)與toIndex(不包括)之間的所有元素。32、boolean retainAll(Collection c); ? ?在此向量中僅保留包含在指定Collection中的元素。
package cn.list.demo;import java.util.Enumeration; import java.util.Iterator; import java.util.Vector;public class VectorDemo {public static void main(String[] args){Vector v=new Vector();v.addElement("abc1");v.addElement("abc2");v.addElement("abc3");v.addElement("abc4");v.addElement("abc1");v.addElement("abc2");v.addElement("abc3");v.addElement("abc4");Vector vec=new Vector();vec.add("abc2");vec.add("abc4");System.out.println(v.retainAll(vec));System.out.println(v);} }此外,還有一些其他方法,這里不再一一列舉。有興趣的可以通過API的介紹自己做練習。
? ? ??
總結
以上是生活随笔為你收集整理的Java中vector的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 阿里技术解密:全链路压测体系建设方案的思
- 下一篇: 阿里云+HCT双证认证,架构师年薪达不到