Java-集合容器-2.List及其实现类.ppt

上传人:tia****nde 文档编号:12707008 上传时间:2020-05-14 格式:PPT 页数:24 大小:1.93MB
返回 下载 相关 举报
Java-集合容器-2.List及其实现类.ppt_第1页
第1页 / 共24页
Java-集合容器-2.List及其实现类.ppt_第2页
第2页 / 共24页
Java-集合容器-2.List及其实现类.ppt_第3页
第3页 / 共24页
点击查看更多>>
资源描述
补充:集合容器类,List接口及其实现类,1,本章学习目标重点、难点,CompanyLogo,本次课学习内容及目标,了解List接口的相关方法掌握List接口实现类的使用LinkedListArrayList了解Vector使用了解Stack使用,3,一、List接口,Collection接口的子接口,继承了其方法其元素以线性方式存储。特点:元素可重复元素有序可以对元素的位置精确控制实现类ArrayListLinkedListVectorStack,List接口常用方法,添加元素booleanadd(Ee)向列表的尾部添加指定的元素voidadd(intindex,Eelement)在列表的指定位置插入指定元素booleanaddAll(Collectionc)添加指定collection中的所有元素到此列表的结尾booleanaddAll(intindex,Collectionc)将指定collection中的所有元素都插入到列表中的指定位置,List接口常用方法,设置元素Eset(intindex,Eelement)用指定元素替换列表中指定位置的元素。获取元素Eget(intindex)返回列表中指定位置的元素。intindexOf(Objecto)返回此列表中第一次出现的指定元素的索引,否则返回-1intlastIndexOf(Objecto)返回此列表中最后出现的指定元素的索引,否则返回-1。ListsubList(intfromIndex,inttoIndex)返回列表中指定的fromIndex(包括)和toIndex(不包括)之间的部分视图。,List接口常用方法,移除元素Eremove(intindex)移除列表中指定位置的元素booleanremove(Objecto)从此列表中移除第一次出现的指定元素(如果存在)booleanremoveAll(Collectionc)从列表中移除指定collection中包含的其所有元素voidclear()从列表中移除所有元素,List接口常用方法,相关判断方法booleancontains(Objecto)如果列表包含指定的元素,则返回truebooleancontainsAll(Collectionc)如果列表包含指定collection的所有元素,则返回truebooleanequals(Objecto)比较指定的对象与列表是否相等booleanisEmpty()如果列表不包含元素,则返回true,List示例,Listlist=newArrayList();/声明一个列表list.add(newInteger(3);/加入列表list.add(newInteger(4);list.add(newInteger(3);list.add(newInteger(2);for(inti=0;ilist.size();i+)System.out.println(list.get(i)+”);/get方法返回集合中的对象3432Iteratorit=list.iterator();/使用迭代器获取元素while(it.hasNext()System.out.println(it.next();/为列表排序Collections.sort(list);for(inti=0;ilist.size();i+)System.out.println(list.get(i)+”);,二、ArrayList介绍,ArrayList就是传说中的动态数组,内部封装了一个Object类型的数组特点:动态的增加和减少元素灵活的设置数组的大小与数组相比,性能稍差,ArrayList常用方法,新增方法VoidensureCapacity(intminCapacity)如有必要,增加此ArrayList实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数。voidtrimToSize()将此ArrayList实例的容量调整为列表的当前大小。voidremoveRange(intfromIndex,inttoIndex)移除列表中索引在fromIndex(包括)和toIndex(不包括)之间的所有元素。,课堂实践1ArrayList使用,编写测试程序,测试ArrayList的各个方法,理解方法的功能,掌握方法的使用。通过测试程序,总结ArrayList的特点。,三、LinkedList介绍,实现List接口,基于双向循环链表结构,LinkedList常用方法,添加元素voidaddFirst(Ee)将指定元素插入此列表的开头voidaddLast(Ee)将指定元素添加到此列表的结尾获取元素element()获取但不移除此列表的头(第一个元素)Eget(intindex)返回此列表中指定位置处的元素EgetFirst()返回此列表的第一个元素EgetLast()返回此列表的最后一个元素,LinkedList常用方法,移除元素Eremove()获取并移除此列表的头(第一个元素)Eremove(intindex)移除此列表中指定位置处的元素booleanremove(Objecto)从此列表中移除首次出现的指定元素(如果存在)EremoveFirst()移除并返回此列表的第一个元素removeLast()移除并返回此列表的最后一个元素。,LinkedList例子,LinkedListl=newLinkedList();l.add(abc);l.add(efg);l.add(gogo);l.add(error);l.remove(3);/移除第四个元素System.out.println(l.get(0);/索引从0开始,得到第一个元素System.out.println(l.get(1);/得到第二个元素System.out.println(l.get(2);/System.out.println(l.get(3);,ArrayList和LinkedList比较,ArrayList基于数组,LinkedList基于链表随机访问元素,ArrayList优于LinkedList增加和删除元素,LinkedList优于ArrayList可用LinkedList实现栈、队列结构结论:若是随机获取元素值,则用ArrayList若是频繁添加和删除元素,则用LinkedList,四、辅助类Collections,类java.util.Collections提供了一些静态方法实现了基于List集合的一些常用算法voidsort(Listl)/对List中的元素排序voidshuffle(Listl)/对List中的元素进行随机排列voidreverse(Listl)/对List中的元素进行逆序排列voidfill(Listl,Objecto)/用一个特定对象重写整个Listvoidcopy(Listdest,Listsrc)/将源内容拷贝到目的intbinarySearch(Listl,Objecto)/对顺序的List采用折半查找的方法查找特定对象,课堂实践2,创建一些商品类,如图书类、食品类、日用品类等实体类。创建业务类,构建容器对象,将这些商品放入容器,并对容器中的商品对象进行增、删、改、查操作。对容器中的数据每次操作后,都显示容器中的元素,以作对比。创建测试类,测试业务类的相关功能。,五、向量类Vector,Vector类以实现类似动态数组的功能使用了synchronized方法(线程安全)所以性能上比ArrayList要差向量类提供了三种构造方法:publicvector()publicvector(intinitialcapacity,intcapacityIncrement)publicvector(intinitialcapacity),Vector例子,importjava.util.*;classVectorTestpublicstaticvoidmain(Stringargs)Vectorvec=newVector();Datedate=newDate();vec.add(newInteger(1);vec.add(newFloat(3.45f);vec.add(newDouble(1.2);vec.add(date);System.out.println(Size:+vec.size();Integern1=(Integer)vec.get(0);System.out.println(向量第1个元素:+n1.intValue();Floatn2=(Float)vec.get(1);System.out.println(向量第2个元素:+n2.floatValue();Doublen3=(Double)vec.get(2);System.out.println(向量第3个元素:+n3.doubleValue();Daten4=(Date)vec.lastElement();System.out.println(向量第4个元素:+n4.toString();if(vec.contains(date)System.out.println(存在date);,Stack类,Stack继承自Vector,实现一个后进先出的堆栈。Stack提供5个额外的方法使得Vector得以被当作堆栈使用。基本的push和pop方法,还有peek方法得到栈顶的元素,empty方法测试堆栈是否为空,search方法检测一个元素在堆栈中的位置。Stack刚创建后是空栈。,总结1,如果涉及到堆栈,队列等操作,考虑用List需要快速插入,删除元素,应该使用LinkedList需要快速随机访问元素,应该使用ArrayList。非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。,
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!