您好,欢迎访问三七文档
手机游戏JAVA语言基础第6章常用的容器专业教程理论讲解部份第6章常用的容器6.1容器6.1.1Vector类java.util.Vector提供了向量(Vector)类以实现类似动态数组的功能。在Java语言中,正如在一开始就提到过Java是没有指针概念的,但如果能正确灵活地使用指针又确实可以大大提高程序的质量。比如在C、C++中所谓“动态数组”一般都由指针来实现。为了弥补这点缺陷,Java提供了丰富的类库来方便编程者使用,Vector类便是其中之一。事实上,灵活使用数组也可完成向量类的功能,但向量类中提供的大量方法很大程度上方便了用户的使用。创建了一个向量类的对象后,可以往其中随意地插入不同的对象,既不需顾及类型也不需预先确定向量的容量,并可方便地进行查找。对于预先不知或不愿预先定义数组大小,并需频繁进行查找、插入和删除工作的情况,可以考虑使用向量类。第6章常用的容器6.1容器6.1.1Vector类1.构造方法Vector()构造一个空向量。Vector(intinitialCapacity)用指定的初始化容量构造一个空向量。Vector(intinitialCapacity,intcapacityIncrement)用指定的初始化容量和容量增量构造一个空向量。使用第一种方法,系统会自动对向量对象进行管理。若使用后两种方法,则系统将根据参数initialcapacity设定向量对象的容量(即向量对象可存储数据的大小),当真正存放的数据个数超过容量时,系统会扩充向量对象的存储容量。参数capacityIncrement给定了每次扩充的扩充值。当capacityIncrement为0时,则每次扩充一倍。利用这个功能可以优化存储。第6章常用的容器6.1容器6.1.1Vector类2.常用操作addElement将obj插入向量的尾部。obj可以是任何类的对象。对同一个向量对象,可在其中插入不同类的对象。但插入的应是对象而不是基本数据类型,所以插入基本数据类型时要注意将基本数据类型转换成相应的对象。publicfinalsynchronizedvoidaddElement(Objectobj);例如要插入一个整数1时,不要直接调用v1.addElement(1),可采用的方法为:Vectorv1=newVector();Stringstr=newString(Hello);v1.addElement(str);第6章常用的容器5.2容器5.2.1Vector类2.常用操作setElementAtpublicfinalsynchronizedvoidsetElementAt(objectobj,intindex);将index处的对象设成obj,原来的对象将被覆盖。例如将上面使用addElement()方法中添加的str对象改成其他对象。代码如下:Stringst2=newString(World);v1.setElementAt(st2,0);Vector向量的index索引是从0开始的,因此在index的位置填入的是0,在obj位置填入的是String对象st2来替换str。第6章常用的容器5.2容器5.2.1Vector类2.常用操作insertElementAtpublicfinalsynchronizedvoidinsertElementAt(Objectobj,intindex);例如:Vectorv=newVector();Stringstr1=newString(Welcome);Stringstr2=newString(China);Stringstr3=newString(To);v.addElement(str1);v.addElement(str2);v.insertElementAt(str3,1);第6章常用的容器5.2容器5.2.1Vector类2.常用操作removeElementpublicfinalsynchronizedvoidremoveElement(Objectobj);从向量中删除obj。若有多个存在,则从向量头开始试,删除找到的第一个与obj相同的向量成员。例如在上例中添加字符串str3后,现在欲将str3删掉,则可以利用removeElement方法。v.removeElement(str3);调用removeElement后,str3对象就从Vector对象中被删除掉。removeAllElementpublicfinalsynchronizedvoidremoveAllElement()删除向量中所有的对象。removeElementlAtpublicfinalsynchronizedvoidremoveElementlAt(intindex);删除index所指地方的对象。第6章常用的容器5.2容器5.2.1Vector类2.常用操作indexOfpublicfinalintindexOf(Objectobj);从向量头开始搜索obj,返回所遇到的第一个obj对应的下标,若不存在此obj,返回-1。例如:Vectorv=newVector();v.addElement(Hello);inti=v.indexOf(Hello);System.out.println(i=+i);i=v.indexOf(World);System.out.println(i=+i);第6章常用的容器5.2容器5.2.1Vector类2.常用操作indexOf上面代码的运行结果是:i=0i=-1为什么两个结果不一样呢?当indexOf方法参数中的对象是字符串“Hello”的时候,由于Vector对象中存在“Hello”对象,并且“Hello”对象在Vector中的第零个元素,因此第一次i的值是“0”;由于Vector对象中不存在“World”对象,因此第二个i的值是-1。第6章常用的容器5.2容器5.2.1Vector类2.常用操作indexOfpublicfinalsynchronizedintindexOf(Objectobj,intindex);从index所表示的下标处开始搜索obj。例如:Vectorv=newVector();v.addElement(Welcome);v.addElement(To);v.addElement(China);inti=v.indexOf(To,0);System.out.println(i=+i);i=v.indexOf(To,2);System.out.println(i=+i);第6章常用的容器5.2容器5.2.1Vector类2.常用操作indexOf上面代码的结果是:i=1i=-1从输出结果看,Vector对象中明明存在“To”,为何在第二个输出中却返回的是-1呢?这是由indexOf的第二个参数决定的。在indexOf带有两个参数的成员方法中,第一个参数是要查找的对象,第二个参数决定从Vector对象中的某个位置开始查找。在上面案例中,第一次使用indexOf成员方法进行查找索引的时候,是从Vector的0位置开始查找,也就是说从Vector对象的开头进行查找,而第二次调用indexOf成员方法的时候,由于第二个参数是2,则表示从Vector对象的第二个索引位置开始向后进行查找,由于“To”在Vector对象中对应的索引位置为1,因此返回的结果为-1。第6章常用的容器5.2容器5.2.1Vector类2.常用操作lastIndexOfpublicfinalintlastIndexOf(Objectobj);从向量尾部开始逆向搜索obj。此方法和indexOf成员方法用法一致,只是从Vector的尾部开始进行搜索。例如某Vector对象中有10个元素,indexOf成员方法是从索引为0的位置开始搜索,而lastIndexOf成员方法是从索引为9的位置开始搜索。publicfinalsynchronizedintlastIndexOf(Objectobj,intindex);从index所表示的下标处由尾至头逆向搜索obj。第6章常用的容器5.2容器5.2.1Vector类2.常用操作firstElementpublicfinalsynchronizedObjectfirstElement();获取向量对象中的首个obj。例如:Vectorv=newVector();v.addElement(Welcome);v.addElement(To);System.out.println(v.firstElement());上面的输出结果如下:WelcomefirstElement()成员方法可以取出Vector对象中第一个元素,即索引值为0的元素。第6章常用的容器5.2容器5.2.1Vector类2.常用操作lastElementpublicfinalsynchronizedObjectlastElement();获取向量对象中的最后一个obj。lastElement()成员方法与firstElement()成员方法刚好相反,lastElement()成员方法可以取出Vector对象中最后一个元素。第6章常用的容器5.2容器5.2.1Vector类2.常用操作publicfinalintcapacity()返回该向量的当前容量。publicfinalbooleancontains(Objectelem)测试指定对象是该向量的一个元素。publicfinalsynchronizedObjectelementAt(intindex)返回指定下标处的组件。publicfinalsynchronizedEnumerationelements()返回该向量的元素的一个枚举。publicfinalbooleanisEmpty()测试该向量是否无元素。
本文标题:容器(下)
链接地址:https://www.777doc.com/doc-3212510 .html