Java-集合容器-2.List及其实现类.ppt_第1页
Java-集合容器-2.List及其实现类.ppt_第2页
Java-集合容器-2.List及其实现类.ppt_第3页
Java-集合容器-2.List及其实现类.ppt_第4页
Java-集合容器-2.List及其实现类.ppt_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

补充:集合容器类,List接口及其实现类,1,本章学习目标 重点、难点,Company Logo,本次课学习内容及目标,了解List接口的相关方法 掌握List接口实现类的使用 LinkedList ArrayList 了解Vector使用 了解Stack使用,3,一、List接口,Collection接口的子接口,继承了其方法 其元素以线性方式存储。 特点: 元素可重复 元素有序 可以对元素的位置精确控制 实现类 ArrayList LinkedList Vector Stack,List接口常用方法,添加元素 boolean add(E e) 向列表的尾部添加指定的元素 void add(int index, E element) 在列表的指定位置插入指定元素 boolean addAll(Collection c) 添加指定 collection 中的所有元素到此列表的结尾 boolean addAll(int index, Collection c) 将指定 collection 中的所有元素都插入到列表中的指定位置,List接口常用方法,设置元素 E set(int index, E element) 用指定元素替换列表中指定位置的元素。 获取元素 E get(int index) 返回列表中指定位置的元素。 int indexOf(Object o) 返回此列表中第一次出现的指定元素的索引,否则返回 -1 int lastIndexOf(Object o) 返回此列表中最后出现的指定元素的索引,否则返回 -1。 List subList(int fromIndex, int toIndex) 返回列表中指定的 fromIndex(包括 )和 toIndex(不包括)之间的部分视图。,List接口常用方法,移除元素 E remove(int index) 移除列表中指定位置的元素 boolean remove(Object o) 从此列表中移除第一次出现的指定元素(如果存在) boolean removeAll(Collection c) 从列表中移除指定 collection 中包含的其所有元素 void clear() 从列表中移除所有元素,List接口常用方法,相关判断方法 boolean contains(Object o) 如果列表包含指定的元素,则返回 true boolean containsAll(Collection c) 如果列表包含指定 collection 的所有元素,则返回 true boolean equals(Object o) 比较指定的对象与列表是否相等 boolean isEmpty() 如果列表不包含元素,则返回 true,List示例,List list=new ArrayList(); /声明一个列表 list.add(new Integer(3); /加入列表 list.add(new Integer(4); list.add(new Integer(3); list.add(new Integer(2); for(int i=0;ilist.size();i+) System.out.println(list.get(i)+” ”);/get方法返回集合中的对象 3 4 3 2 Iterator it=list.iterator(); /使用迭代器获取元素 while(it.hasNext() System.out.println(it.next(); /为列表排序 Collections.sort(list); for(int i=0;ilist.size();i+) System.out.println(list.get(i)+” ”);,二、ArrayList介绍,ArrayList就是传说中的动态数组,内部封装了一个Object类型的数组 特点: 动态的增加和减少元素 灵活的设置数组的大小 与数组相比,性能稍差,ArrayList常用方法,新增方法 Void ensureCapacity(int minCapacity) 如有必要,增加此 ArrayList 实例的容量,以确保它至少能够容纳最小容量参数所指定的元素数。 void trimToSize() 将此 ArrayList 实例的容量调整为列表的当前大小。 void removeRange(int fromIndex, int toIndex) 移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之间的所有元素。,课堂实践1ArrayList使用,编写测试程序,测试ArrayList的各个方法,理解方法的功能,掌握方法的使用。 通过测试程序,总结ArrayList的特点。,三、LinkedList介绍,实现List接口,基于双向循环链表结构,LinkedList常用方法,添加元素 voidaddFirst(E e) 将指定元素插入此列表的开头 voidaddLast(E e) 将指定元素添加到此列表的结尾 获取元素 element() 获取但不移除此列表的头(第一个元素) Eget(int index) 返回此列表中指定位置处的元素 EgetFirst() 返回此列表的第一个元素 EgetLast() 返回此列表的最后一个元素,LinkedList常用方法,移除元素 E remove() 获取并移除此列表的头(第一个元素) E remove(int index) 移除此列表中指定位置处的元素 booleanremove(Object o) 从此列表中移除首次出现的指定元素(如果存在) E removeFirst() 移除并返回此列表的第一个元素 removeLast() 移除并返回此列表的最后一个元素。,LinkedList例子,LinkedList l=new LinkedList(); 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集合的一些常用算法 void sort(List l) /对List中的元素排序 void shuffle(List l) /对List中的元素进行随机排列 void reverse(List l) /对List中的元素进行逆序排列 void fill(List l,Object o) /用一个特定对象重写整个List void copy(List dest,List src) /将源内容拷贝到目的 int binarySearch(List l,Object o) /对顺序的List采用折半查找的方法查找特定对象,课堂实践2,创建一些商品类,如图书类、食品类、日用品类等实体类。 创建业务类,构建容器对象,将这些商品放入容器,并对容器中的商品对象进行增、删、改、查操作。对容器中的数据每次操作后,都显示容器中的元素,以作对比。 创建测试类,测试业务类的相关功能。,五、向量类Vector,Vector类以实现类似动态数组的功能 使用了synchronized方法(线程安全)所以性能上比ArrayList要差 向量类提供了三种构造方法: public vector() public vector(int initialcapacity,int capacityIncrement) public vector(int initialcapacity),Vector例子,import java.util.*; class VectorTest public static void main(String args) Vector vec=new Vector(); Date date=new Date(); vec.add(new Integer(1); vec.add(new Float(3.45f); vec.add(new Double(1.2); vec.add(date); System.out.println(“Size:“+vec.size(); Integer n1=(Integer)vec.get(0); System.out.println(“向量第1个元素:“+Value(); Float n2=(Float)vec.get(1); System.out.println(“向量第2个元素:“+n2.floatValue(); Double n3=(Double)vec.get(2); System.out.println(“向量第3个元素:“+n3.doubleValue(); Date n4=(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方法检测一个元素在堆

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论