收藏 分享(赏)

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

上传人:gsy285395 文档编号:6901195 上传时间:2019-04-26 格式: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页
Java-集合容器-2.List及其实现类.ppt_第4页
第4页 / 共24页
Java-集合容器-2.List及其实现类.ppt_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、补充:集合容器类,List接口及其实现类,1,本章学习目标 重点、难点,Company Logo,本次课学习内容及目标,了解List接口的相关方法 掌握List接口实现类的使用 LinkedList ArrayList 了解Vector使用 了解Stack使用,3,一、List接口,Collection接口的子接口,继承了其方法 其元素以线性方式存储。 特点: 元素可重复 元素有序 可以对元素的位置精确控制 实现类 ArrayList LinkedList Vector Stack,List接口常用方法,添加元素 boolean add(E e) 向列表的尾部添加指定的元素 void add(

2、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) 返回此列表中第一次出

3、现的指定元素的索引,否则返回 -1int 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) 从列表中移除指定 colle

4、ction 中包含的其所有元素 void clear() 从列表中移除所有元素,List接口常用方法,相关判断方法 boolean contains(Object o) 如果列表包含指定的元素,则返回 trueboolean containsAll(Collection c) 如果列表包含指定 collection 的所有元素,则返回 trueboolean equals(Object o) 比较指定的对象与列表是否相等 boolean isEmpty() 如果列表不包含元素,则返回 true,List示例,List list=new ArrayList(); /声明一个列表 list.add

5、(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(lis

6、t); 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 实例的容

7、量调整为列表的当前大小。 void removeRange(int fromIndex, int toIndex) 移除列表中索引在 fromIndex(包括)和 toIndex(不包括)之间的所有元素。,课堂实践1ArrayList使用,编写测试程序,测试ArrayList的各个方法,理解方法的功能,掌握方法的使用。 通过测试程序,总结ArrayList的特点。,三、LinkedList介绍,实现List接口,基于双向循环链表结构,LinkedList常用方法,添加元素 voidaddFirst(E e) 将指定元素插入此列表的开头 voidaddLast(E e) 将指定元素添加到此列表的

8、结尾 获取元素 element() 获取但不移除此列表的头(第一个元素)Eget(int index) 返回此列表中指定位置处的元素EgetFirst() 返回此列表的第一个元素 EgetLast() 返回此列表的最后一个元素,LinkedList常用方法,移除元素 E remove() 获取并移除此列表的头(第一个元素) E remove(int index) 移除此列表中指定位置处的元素booleanremove(Object o) 从此列表中移除首次出现的指定元素(如果存在) E removeFirst() 移除并返回此列表的第一个元素 removeLast() 移除并返回此列表的最后一

9、个元素。,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基于数

10、组,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

11、 l) /对List中的元素进行逆序排列 void fill(List l,Object o) /用一个特定对象重写整个List void copy(List dest,List src) /将源内容拷贝到目的 int binarySearch(List l,Object o) /对顺序的List采用折半查找的方法查找特定对象,课堂实践2,创建一些商品类,如图书类、食品类、日用品类等实体类。 创建业务类,构建容器对象,将这些商品放入容器,并对容器中的商品对象进行增、删、改、查操作。对容器中的数据每次操作后,都显示容器中的元素,以作对比。 创建测试类,测试业务类的相关功能。,五、向量类Vecto

12、r,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 dat

13、e=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个元素:“+n1.intValue();Float n2=(Float)vec.get(1);System.out.println(“向量第2个元素:“+n2.floatValue();Double n3=(Do

14、uble)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方法检测一个元素在堆栈中的位置。 Stack刚创建后是空栈。,总结1,如果涉及到堆栈,队列等操作,考虑用List 需要快速插入,删除元素,应该使用LinkedList 需要快速随机访问元素,应该使用ArrayList。 非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。 尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 网络科技 > Java

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报