Java集合框架

上传人:xx****x 文档编号:243009459 上传时间:2024-09-13 格式:PPT 页数:28 大小:100.50KB
返回 下载 相关 举报
Java集合框架_第1页
第1页 / 共28页
Java集合框架_第2页
第2页 / 共28页
Java集合框架_第3页
第3页 / 共28页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Java API开发,Java集合框架(JCF:Java Collections Framework),2010.5,1,引言:,集合框架,用来表示和操作集合的一组接口与类。如数组、列表和队列等。,一个集合(也称容器)是指将一组元素组合成一个单元的简单对象。,集合用于存储、取回、操作和传递这些聚合的元素。,Java集合框架的设计者Bloch Joshua,他著有Java高效编程。,2,本讲内容:,1、集合框架的概念,2、Java语言中的集合,3、Collection接口,4、Set接口,5、List接口,6、Map接口,3,1、集合框架的概念,集合框架:是为表示和操作集合而规定的一种统一的、标准的体系结构。,任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。,接口:即表示集合的抽象数据类型。接口提供了让我们对集合中所表示的内容进行单独操作的可能。,实现:也就是集合框架中接口的具体实现。实际它们就是那些可复用的数据结构。,算法:在一个实现了某个集合框架中的接口的对象上,完成某种有用的计算的方法,例如查找、排序等。,4,1、集合框架的概念,集合框架对编程有什么好处呢?,提高程序设计效率。,提高程序速度和质量。集合框架通过提供对有用的数据结构和算法的高性能和高质量的实现使你的程序速度和质量得到提高。,集合框架鼓励软件的复用。对于遵照标准集合框架接口的新的数据结构是可复用的。,5,2、Java语言中的集合,Java2的集合框架,主要有三个接口:List、Set和Map。其中,List和Set继承了Collection,而Map则独成一体。,6,2、Java语言中的集合,用“集合框架”设计软件时,记住该框架四个基本接口的层次结构关系会有用处:,Collection 接口是一组允许重复的对象。,Set 接口继承 Collection,但不允许重复。,List 接口继承 Collection,允许重复,并引入位置下标。,Map 接口既不继承 Set 也不继承 Collection。,7,2、Java语言中的集合,Java 2 框架主要有六个集合实现:,接 口,实 现,Set,HashSet,TreeSet,List,ArrayList,LinkedList,Map,HashMap,TreeMap,8,集合,的使用示例:,说明:,为演示具体 Set 类的使用,下面的程序创建了一个 HashSet,并往里添加了一组名字,其中有个名字添加了两次。,程序把集中名字的列表打印出来,演示了重复的名字没有出现。接着,程序把集作为 TreeSet 来处理,并显示有序的列表。,9,集合,的使用示例:,import java.util.*;,public class SetExample ,public static void main(String args) ,Set set = new HashSet();,set.add(Bernadine);,set.add(Elizabeth);,set.add(Gene);,set.add(Elizabeth);,set.add(Clara);,System.out.println(set);,Set sortedSet = new TreeSet(set);,System.out.println(sortedSet);,Bernadine, Gene, Clara, Elizabeth,Bernadine, Clara, Elizabeth, Gene,10,3、,Collection接口,该接口支持添加和除去等基本操作。设法除去一个元素时,如果这个元素存在,除去的仅仅是集合中此元素的一个实例。,boolean add(Object element),boolean remove(Object element),Collection 接口还支持查询操作:,int size(),boolean isEmpty():,是否为空,boolean contains(Object element),Iterator iterator(),11,Iterator 接口的用法说明:,Java的集合框架给出了一个Iterator可以操作一个Collection,而不需知道这个Collection的具体实现类型是什么。,Collection 接口的 iterator() 方法返回一个 Iterator。使用 Iterator 接口方法,可以从头至尾遍历集合。,用法举例:,Collection collection = .;,Iterator iterator = collection.iterator();,while (iterator.hasNext() ,Object element = iterator.next();,12,3、,Collection接口,组操作 :要么是作用于元素组的任务,要么是同时作用于整个集合的任务。,boolean containsAll(Collection collection),boolean addAll(Collection collection),void clear(),void removeAll(Collection collection),void retainAll(Collection collection),13,3、,Collection接口,containsAll方法:允许您查找当前集合是否包含了另一个集合的所有元素,即另一个集合是否是当前集合的子集。,addAll方法:确保另一个集合中的所有元素都被添加到当前的集合中,通常称为并。,clear方法:从当前集合中除去所有元素。,removeAll:方法类似于 clear() ,但只除去了元素的一个子集。,retain All 方法:类似于 removeAll() 方法,它从当前集合中除去不属于另一个集合的元素,即交。,14,4、Set,接口,Set接口扩展了 Collection 接口,且根据定义它也禁止在集合中出现重复元素。它采用所有原始方法,并且未引入任何新方法。,集合框架为 Set 接口提供了两种通用实现:HashSet 和 TreeSet。,HashSet 来存储不重复的集合。,当需要以一种排序的方式从集合中提取元素的时候,TreeSet 实现很有用。为了正确运行,添加到 TreeSet 中的元素必须是可排序的。通常将元素添加到 HashSet ,然后将该集合转换成一个 TreeSet 进行排序遍历,这样更快一些。,15,5、List接口,List接口对Collection进行了简单的扩充,可以将任何东西放到一个List容器中,并在需要时从中取出。,次序是List最重要的特点;它确保维护元素特定的顺序。List为Collection添加了许多方法,使得能够向List中间插入与移除元素。,可以在List中间插入和删除元素。,它的具体实现类常用的有ArrayList和LinkedList。在具体应用时可以根据需要自由选择。,16,(1)ArrayList,从其命名中可以看出它是一种类似数组的形式进行存储,因此它的随机访问速度极快。,它允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢。,特点:底层为数组,删除插入效率低,查询效率高。,17,(1)ArrayList,ArrayList遍历有两种遍历方式,非通用方式,即通过size()方法,for循环。,ArrayList al = new ArrayList();,al.add(new Integer(10000);,al.add(new Integer(200000);,al.add(new Integer(1000000);,for(int i = 0; i al.size(); i+),System.out.println(al.get(i);,18,(1)ArrayList,通用方式,即用迭代器。,printCollection(Collection c),Iterator it = c.iterator();,while(it.hasNext(),it.next();,19,(2)LinkedList,LinkedList: LinkedList的内部实现是链表,它适合于在链表中间需要频繁进行插入和删除操作。,LinkedList,可用于构建堆栈,或者队列。,底层为双向循环链表:,20,(2)LinkedList,可以双向找到前后的节点,最后头尾链接,形成一个环状。,特点:查寻效率低(从头节点遍历),插入删除效率高。,它具有方法addFirst()、addLast()、getFirst()、getLast()、removeFirst()、removeLast(),这些方法(没有在任何接口或基类中定义过)使得LinkedList可以当作堆栈、队列和双向队列使用。,21,(2)LinkedList,importjava.util.*;classMyStackprivateLinkedListll=newLinkedList();publicvoidpush(Objecto)ll.addFirst(o);publicObjectpop()returnll.removeFirst();publicbooleanempty()returnll.isEmpty();,22,(2)LinkedList,publicstaticvoidmain(Stringargs)MyStackms=newMyStack();ms.push(one);ms.push(two);ms.push(three);System.out.println(ms.pop();System.out.println(ms.pop();System.out.println(ms.empty();,23,6、Map接口,Map接口与Collection接口无关系,它表示的集合,内部每个元素是一个键-值对。,对于键对象来说,像Set一样,一个Map容器中的键对象不允许重复,这是为了保持查找结果的一致性。,Map有两种比较常用的实现:HashMap和TreeMap。HashMap也用到了哈希码的算法,以便快速查找一个键,TreeMap则是对键按序存放,因此它便有一些扩展的方法,比如firstKey(), lastKey()等,可以从TreeMap中指定一个范围以取得其子Map。,键和值的关联很简单,用put(Object key, Object value)方法即可将一个键与一个值对象相关联。用get(Object key)可得到与此key对象所对应的值对象。,24,6、Map接口,注意:,把一系列对象通过一个关键字来存放,key不能重复,value可重复。,Map m = new HashMap();,put(Object key, Object value);/存放键和值,返回值为Object。,遍历方法:通过Map接口提供的keySet()方法,会返回一个Set类型无序集合,存放着key对象(KEY不重复,所以是一个Set)。,25,6、Map接口,Set s = m.keySet();,Iterator it = s.iterator();,while(it.hasNext(),Object key = it.next();,Object value = m.get(key);,26,集合框架总结:,1、,List(有序), Set(无序), Map(键值),2、对于TreeMap和TreeSet,只在需要排序时,使用一下,因为他们每次插入新元素,都会重新排序。,27,再 见!,28,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


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

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


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