数组与向量(Vector)、ArrayList与vector的对比---数据结构.doc

数组与向量(Vector)、ArrayList与vector的对比---数据结构.doc

ID:59355518

大小:45.50 KB

页数:7页

时间:2020-09-04

数组与向量(Vector)、ArrayList与vector的对比---数据结构.doc_第1页
数组与向量(Vector)、ArrayList与vector的对比---数据结构.doc_第2页
数组与向量(Vector)、ArrayList与vector的对比---数据结构.doc_第3页
数组与向量(Vector)、ArrayList与vector的对比---数据结构.doc_第4页
数组与向量(Vector)、ArrayList与vector的对比---数据结构.doc_第5页
资源描述:

《数组与向量(Vector)、ArrayList与vector的对比---数据结构.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、数组与向量(Vector)、ArrayList与vector的对比--数据结构一、数组与向量(Vector)A、vector与数组类似,但能被扩大和缩小。向量与数组的区别:   1、Java的数组可存储任何类型的数组元素,包括数值类型和所有类类型                2、Java向量只能存储对象类的实例。               向量能重定位和调整自己的容量。缺省时,向量重定位一次,其容量就扩大一倍,呈指数增长,所以应指定容量增量,做为向量构造函数的第二个参数,来创建向量:   VectoritemsOrdered=newVector(3.10);这样

2、向量每重定位一次,其容量都增加10个元素。   v.size()返回向量中的元素个数,等价于arry.length();   如果向量已达到其永久大小,则可调用tirmToSize方法,将内存块大小调整到刚好能容纳当前个数的向量元素     向量中不能用方便的[]句法,而必须用elementAt和setSlementAt方法来访问或修改元素。        数组:x=a[i](访问)      a[i]=x;(修改)    向量:x=v.elementAt(i)   v.SetElementAt(x.i)B、Choice类:类似Combox选框   ChoiceCo

3、lorChooser=newChoice();   ColorChooser.add("Green");   ColorChooser.add("Red");   ColorChooser.add("Blue");   Panelp=newPanel();p.add(ColorChooser);(在面板上显示Combox组合选框)二、ArrayList的使用方法以及与vector的对比1、什么是ArrayList    ArrayList就是传说中的动态数组,用MSDN中的说法,就是Array的复杂版本,它提供了如下一些好处:·动态的增加和减少元素·实现了IColl

4、ection和IList接口·灵活的设置数组的大小2、如何使用ArrayList    最简单的例子:ArrayListList=newArrayList();for(inti=0;i<10;i++)//给数组增加10个Int元素List.Add(i);//..程序做一些处理List.RemoveAt(5);//将第6个元素移除for(inti=0;i<3;i++)//再增加3个元素List.Add(i+20);Int32[]values=(Int32[])List.ToArray(typeof(Int32));//返回ArrayList包含的数组这是一个简单的例子

5、,虽然没有包含ArrayList所有的方法,但是可以反映出ArrayList最常用的用法3、ArrayList重要的方法和属性(1)构造器    ArrayList提供了三个构造器:publicArrayList();默认的构造器,将会以默认(16)的大小来初始化内部的数组publicArrayList(ICollection);用一个ICollection对象来构造,并将该集合的元素添加到ArrayListpublicArrayList(int);用指定的大小来初始化内部的数组(2)IsSynchronized属性和ArrayList.Synchronized方法

6、    IsSynchronized属性指示当前的ArrayList实例是否支持线程同步,而ArrayList.Synchronized静态方法则会返回一个ArrayList的线程同步的封装。    如果使用非线程同步的实例,那么在多线程访问的时候,需要自己手动调用lock来保持线程同步,例如:ArrayListlist=newArrayList();//...lock(list.SyncRoot)//当ArrayList为非线程包装的时候,SyncRoot属性其实就是它自己,但是为了满足ICollection的SyncRoot定义,这里还是使用SyncRoot来保

7、持源代码的规范性{list.Add(“AddaItem”);}     如果使用ArrayList.Synchronized方法返回的实例,那么就不用考虑线程同步的问题,这个实例本身就是线程安全的,实际上ArrayList内部实现了一个保证线程同步的内部类,ArrayList.Synchronized返回的就是这个类的实例,它里面的每个属性都是用了lock关键字来保证线程同步。****但是,使用这个方法(ArrayList.Synchronized)并不能保证枚举的同步,例如,一个线程正在删除或添加集合项,而另一个线程同时进行枚举,这时枚举将会抛出异常。所以,在

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。