欢迎来到天天文库
浏览记录
ID:59355518
大小:45.50 KB
页数:7页
时间:2020-09-04
《数组与向量(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)并不能保证枚举的同步,例如,一个线程正在删除或添加集合项,而另一个线程同时进行枚举,这时枚举将会抛出异常。所以,在
此文档下载收益归作者所有