从屌丝到架构师的飞越(集合篇)-Vector

一.介绍

基于数组(Array)的List,其实就是封装了数组所不具备的一些功能方便我们使用,所以它难易避免数组的限制,同时性能也不可能超越数组。所以,在可能的情况下,我们要多运用数组。另外很重要的一点就是Vector是线程同步的(sychronized)的,这也是Vector和ArrayList 的一个的重要区别。

(1)ArrayList会比Vector快,他是非同步的,如果设计涉及到多线程,还是用Vector比较好一些 。

二.知识点介绍

1、初次使用Vector

2、Vector的方法

三.上课对应视频的说明文档

1、初次使用Vector

import java.util.*;

/**

* 演示Vector的使用。包括Vector的创建、向Vector中添加元素、从Vector中删除元素、

* 统计Vector中元素的个数和遍历Vector中的元素。

*/

public class VectorDemo{

public static void main(String[] args){

//Vector的创建

//使用Vector的构造方法进行创建

Vector v = new Vector(4);

//向Vector中添加元素

//使用add方法直接添加元素

v.add("Test0");

v.add("Test1");

v.add("Test0");

v.add("Test2");

v.add("Test2");

//从Vector中删除元素

v.remove("Test0"); //删除指定内容的元素

v.remove(0); //按照索引号删除元素

//获得Vector中已有元素的个数

int size = v.size();

System.out.println("size:" + size);

//遍历Vector中的元素

for(int i = 0;i < v.size();i++){

System.out.println(v.get(i));

}

}

}

2、Vector方法

(1)boolean add(E o)

将指定元素追加到此向量的末尾。

(2)void add(int index, E element)

在此向量的指定位置插入指定的元素。

(3)boolean addAll(Collection<? extends E> c)

将指定 Collection 中的所有元素追加到此向量的末尾,按照指定集合的迭代器所返回的顺序追加这些元素。

(4)boolean addAll(int index, Collection<? extends E> c)

在指定位置将指定 Collection 中的所有元素插入到此向量中。

(5)void addElement(E obj)

将指定的组件添加到此向量的末尾,将其大小增加 1。

(7)int capacity()

返回此向量的当前容量。

(8)void clear()

从此向量中移除所有元素。

(9)Object clone()

返回向量的一个副本。

(10)boolean contains(Object elem)

测试指定的对象是否为此向量中的组件。

(11)boolean containsAll(Collection<?> c)

如果此向量包含指定 Collection 中的所有元素,则返回 true。

(12)void copyInto(Object[] anArray)

将此向量的组件复制到指定的数组中。

(13)E elementAt(int index)

返回指定索引处的组件。

(14)Enumeration<E> elements()

返回此向量的组件的枚举。

(15)void ensureCapacity(int minCapacity)

增加此向量的容量(如有必要),以确保其至少能够保存最小容量参数指定的组件数。

(16)boolean equals(Object o)

比较指定对象与此向量的相等性。

(17)E firstElement()

返回此向量的第一个组件(位于索引 0 处的项)。

(18)E get(int index)

返回向量中指定位置的元素。

(19)int hashCode()

返回此向量的哈希码值。

(20)int indexOf(Object elem)

搜索给定参数的第一个匹配项,使用 equals 方法测试相等性。

(21)int indexOf(Object elem, int index)

搜索给定参数的第一个匹配项,从 index 处开始搜索,并使用 equals 方法测试其相等性。

(22)void insertElementAt(E obj, int index)

将指定对象作为此向量中的组件插入到指定的 index 处。

(23)boolean isEmpty()

测试此向量是否不包含组件。

(24)E lastElement()

返回此向量的最后一个组件。

(25)int lastIndexOf(Object elem)

返回指定的对象在此向量中最后一个匹配项的索引。

(26)int lastIndexOf(Object elem, int index)

向后搜索指定的对象,从指定的索引处开始搜索,并返回一个索引。

(27)E remove(int index)

移除此向量中指定位置的元素。

(28)boolean remove(Object o)

移除此向量中指定元素的第一个匹配项,如果向量不包含该元素,则元素保持不变。

(29)boolean removeAll(Collection<?> c)

从此向量中移除包含在指定 Collection 中的所有元素。

(30)void removeAllElements()

从此向量中移除全部组件,并将其大小设置为零。

(31)boolean removeElement(Object obj)

从此向量中移除变量的第一个(索引最小的)匹配项。

(32)void removeElementAt(int index)

删除指定索引处的组件。

(33)protected void removeRange(int fromIndex, int toIndex)

从此 List 中移除其索引位于 fromIndex(包括)与 toIndex(不包括)之间的所有元素。

(34)boolean retainAll(Collection<?> c)

在此向量中仅保留包含在指定 Collection 中的元素。

(35)E set(int index, E element)

用指定的元素替换此向量中指定位置处的元素。

(36)void setElementAt(E obj, int index)

将此向量指定 index 处的组件设置为指定的对象。

(37)void setSize(int newSize)

设置此向量的大小。

(38)int size()

返回此向量中的组件数。

(39)List<E> subList(int fromIndex, int toIndex)

返回此 List 的部分视图,元素范围为从 fromIndex(包括)到 toIndex(不包括)。

(40)Object[] toArray()

返回一个数组,包含此向量中以正确顺序存放的所有元素。

(42)toArray(T[] a)

返回一个数组,包含此向量中以正确顺序存放的所有元素;返回数组的运行时类型为指定数组的类型。

(43)String toString()

返回此向量的字符串表示形式,其中包含每个元素的 String 表示形式。

(44)void trimToSize()

对此向量的容量进行微调,使其等于向量的当前大小。

案例:

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的大小,多余的元素被抛弃 

}

3、Vector

Vector:我们可以将其理解为版本旧的、安全的、效率低的ArrayList,Vector中提供了一个独特的取出方式,就是枚举Enumeration。此接口Enumeration的功能与 Iterator 接口的功能是类似的。

有兴趣的同学可以自己了解:

public E elementAt(int index)  / get(index )

public E firstElement()

public E lastElement()

public void setElementAt(E obj, int index) set(index,obj)

public void removeElementAt(int index)及其他删除 remove(index)

public Enumeration<E> elements()

import java.util.Enumeration;

import java.util.Vector;

/*

* Vector :  数组结构,单线程的 ArrayList.

*/

public class Demo2 {

public static void main(String[] args) {

Vector<String > vector = new Vector<>();

vector.addElement("111");

vector.addElement("222");

vector.addElement("444");

vector.addElement("333333");

// 获取 枚举.

Enumeration<String> elements = vector.elements();

while (elements.hasMoreElements()) {

String nextElement = elements.nextElement();

System.out.println(nextElement);

}

}

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容