版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、常用集合简析,集合结构,CollectionListLinkedListArrayListVectorStackSetMapHashtableHashMap,集合类机构关系图,List容器,List的特性:,1.可以存放任何类型的元素元素可重复 2.容器可变大小 3.有序排列,可以使用索引来访问,List的实现类: ArrayList,LinkedList,Vector,Stack,List容器- ArrayList,ArrayList:List l=new ArrayList();,数组列表类,没有线程同步。,常用方法:,add(Object obj);/插入元素,在末尾 add(int i
2、, Object obj);/在索引i处添加元素 remove(int i);/移除i索引处的元素 get(int i);/获取索引i处的方法 size();列表中的元素数 toArray();将列表中的元素转为数组,List容器- LinkedList,LinkedList:LinkedList l=new LinkedList();,链表类,没有线程同步。,常用方法:,addFirst(Object o);/将指定元素插入此列表的开头 addLast(Object o);/将指定元素插入此列表的末尾 getFirst();/返回此列表的第一个元素。 getLast();/返回此列表的最后一
3、个元素。 removeFirst();/删除列表的第一个元素 removeLast();/删除列表的最后一个元素,List容器- Vector, Stack,Vector,Stack: 可以把Vector看作实现了同步的ArrayList。而Stack 是一个栈类,他继承自Vector,实现了先进后出。,Stack的几个扩展方法: empty();测试堆栈是否为空。 peek();查看堆栈顶部的对象。 pop();移除堆栈顶部的对象。 search();返回对象在堆栈中的位置,泛型,所谓泛型是指将类型参数化以达到代码复用,提高软件开发工作效率 的一种数据类型。,我们在用List存储和取值的时候
4、,其实都做了装箱,拆箱的操作。显然大量重复的装拆箱动作会降低效率。,eg: List l=new ArrayList(); java的泛型规定了集合中存储的数据类型,避免了不必要的装拆箱动作。 并且泛型可以起到检测存储类型的作用。,Set容器,Set的特性:,1.可以存放任何类型的元素 2.不可存放重复值 3.无序排列,不可通过索引来访问,Set的实现类: HashSet,Set容器- HashSet,HashSet:Set l=new HashSet();,散列集结构,没有线程同步。,常用方法:,add(Object o)/添加元素 clear()/移除所有元素 size()/返回此set中
5、元素的数量 remove(Object o)/移除某个元素 containts(Object o)/如果此 set 包含指定元素,则返回 true,怎样遍历一个Set集合的所有元素?,迭代器,提供一种方法访问一个容器对象中各个元素,而又不需暴露 该对象的内部细节。,/用Set构建迭代器 Iterator i=set.iterator(); while(i.hasNext() Object o=i.next();System.out.println(o); ,迭代器的三个方法: hasNext();/判断是否有元素可迭代 next();/返回迭代的下一个元素 remove()/移除当前元素,Ma
6、p容器,Map的特性:,1.以键(key)值(Value)配对的方式存放元素 2.不可以包含相同的key 3.散列表结构,Map的实现类: Hashtable,HashMap,Map容器- Hashtable,Hashtable:Map l=new HashTable();,线程同步,任何非 null 对象都可以用作键或值,常用方法:,put(Object key,Object value)/将指定的key映射到value get(Object key)/返回该key对应的value值 keySet()/返回此映射中的key的set集合 values()/返回此映射中的value的Collec
7、tion集合 remove(Object key)/移除该key以及相应的值,Map容器- HashMap,HashMap:Map l=new HashMap();,HashMap和Hashtable方法基本相同。 区别在于: HashMap是非同步,并且允许null作为key和value,数据结构,链表:,链表中的元素存储在一条链的节点上。,数组列表:,动态变化容量的数组。按序存储在一系列连续的空间上。,散列表:,以键-值对应的形式存储元素,他是一个无序的数据结构。,散列集:,通过内部散列码计算元素存储地址,和散列表的区别是没有键值。,总结,1.如果涉及到堆栈,队列等操作,应该考虑用List
8、,对于需要快速插入,删除元素,应该使用LinkedList,如果需要快速随机访问元素,应该使用ArrayList。 2.如果程序在单线程环境中,或者访问仅仅在一个线程中进行,考虑非同步的类,其效率较高,如果多个线程可能同时操作一个类,应该使用同步的类。 3.尽量返回接口而非实际的类型,如返回List而非ArrayList,这样如果以后需要将ArrayList换成LinkedList时,客户端代码不用改变。这就是针对抽象编程。,同步性,Vector是同步的。这个类中的一些方法保证了Vector中的对象是线程安全的。 而ArrayList则是异步的,因此ArrayList中的对象并不是线程安全的。因为同步的要求会影响执行的效率,所以如果你不需要线程安全的集合那 么使用ArrayList是一个很好的选择,这样可以避免由于同步带来的不必要的性能开销。,用Iterator模式实现遍历集合,Iterator模式是用于遍历集合类的标准访问方法。它可以把访问逻辑从不同类型的集合类中抽象出来,从而避免向客户端暴露集合的内部结构。 每一种集合类返回的Iterator具体类型可能不同,Arra
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年航天施工数字化转型协议
- 2026年建筑工地冬季施工安全培训
- 2026年生物实验室危险废物处置手册
- 2026年透析患者钾摄入管理与食物选择
- 2026年兽医团队协作与病例讨论培训
- 深圳市2025广东深圳大学经济学院招聘行政秘书笔试历年参考题库典型考点附带答案详解
- 淮上区2025安徽蚌埠淮上经济开发区招聘10人笔试历年参考题库典型考点附带答案详解
- 海盐县2025浙江嘉兴海盐县机关事业单位编外招聘112人笔试历年参考题库典型考点附带答案详解
- 浙江省2025浙江省应急管理宣传教育中心招聘1人笔试历年参考题库典型考点附带答案详解
- 浙江省2025浙江农林大学暨阳学院非教学岗位人员招聘5人笔试历年参考题库典型考点附带答案详解
- GB/T 44970-2024粮油机械气垫带式输送机
- 《低聚糖功能性质》课件
- 《森林植物》课件-03 榆科
- 华南理工大学《工程热力学》2023-2024学年第一学期期末试卷
- T-NBHTA 004-2024 热处理企业环境保护技术规范
- 08 西北地区(课件)-备战2025高考地理之中国地理主题探究式复习
- 2024年广西南宁市小升初数学试卷(含答案)
- 大学语文全套教学课件
- 《矿物岩石学教学课件》1-2 矿物学
- 压力管道培训课件
- 输液技术与临床应用
评论
0/150
提交评论