

下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Java 面向对象编程 Java15 - Java面向对象编程学习笔记中的集合 1.集合的特点: 都位于 java.util 包中,不能存放基本类型的数据,而只能存放对象的引用, 操作的数目可以不固定(类似于动态数组)。 2.分类: id H rl 有三个类: a.Set(集):对象不按特定方式排序,没有重复元素。这个与数学中的集合概念 最相似。b.List(列表):按照索引位置排序,可以有重复元素,允许按照对象在集 合中的索引位置检索对象。 c.Map(映射):每一个元素包含一个键值对。没有重复的键值对,但是值对象可 以重复。 有两个接口: Collection 接口适用于 Java 集合中
2、的 Set 和 List (这两个类直接继承了这个 接口),提供了一些通用操纵的静态方法。Mrlif Hwvvpl 4 初冒才|0, 电 irtP Um 耳K r - I 勺1W T- Iterator 接口隐藏了底层集合的数据结构,对外提供了遍历各种数据类型集合 的统一接口。由 collection 集合的 iterator 得到一个 Iterator 。语法如下 : Iterator it = set.iterator(); ( 注意此后若通过 collection 方法修改了集合则使用 next() 方法时会出现异 常,因为其运用了所谓快速失败机制。避免了潜在的共享资源竞争而导致的并发问
3、 题)。 3.Set 集合 : 主要有两个实现类 :HashSet 和 TreeSet 。 前者使用哈希算法,存取速度快,它还有一个子类 LinkedHashSet 类,性能更 高。HashSet 向集合中加入一个对象时,会调用对象的 hashCode()方法得到哈希 码,然后根据这个哈希码计算出对象在集合中的存放位置。 为了保证其能正常工作,要求当两个对象用 equals() 方法比较的结果为 true 时它们的哈希码也必须相同。这就要求我们如果在我们自己设计的类中覆盖了 equals 方法,那么也也应该覆盖 hashCode() 方法。用 equals() 方法比较的结果为 false 时
4、,最好hashCode 不同,减少哈希冲突,提高性能。 而后者则实现了 SortedSet 接口,具有排序功能。由于用户属性变化不会导致 重新排序,所以适合加入不可变类。向其中加入自定义的类时要注意,实现其 Comparable接口,并且 euqals()得出的结论要与 compareTo()得出的结论相同。 另外,它还支持 Comparator 接口,可以定义一个实现了该接口的类 CustomerComparator 实现自定义的排序。在定义时使用如下的语法 : Set set = new TreeSet(new CustomerComparator); 4. List 列表 : 的一个顾问
5、曾拟文说在 Java 中强烈建议使用 List 替代所有的数组。在数组与 List 转换时使用 asList 的方法。 主要有两个实现类 :ArrayList 和 LinkedList 。 前者的特点是允许对元素进行快速随机访问,但插于和删除元素的速度较慢。 一般用于代表可变数组。 后者的特点是采用链表数据结构,对顺序访问和删除、插入元素速度较快,但 随机访问速度较慢。一般用于代表堆栈、队列和双向队列。 一个比较实用的接口是 ListIterator 接口,使用 listIterator 方法返回得 到,它继承了 Iterator 接口,并且提供了专门操纵列表的方法。 Arrays 类的一个方
6、法 asList() 可以把一个数组包装成 List 对象,但此时这个 List 固定长度了,因为所有操作都会作用于底层数组。 以前还有一个叫做 Vector 类,现在已经不提倡使用了。 性能上, Java 数组的随机访问和迭代操作速度最快, ArrayList 的随机访问速 度也较快,而 LinkedList 则进行插入和删除操作有最快的速度。 因此尽量不要在 List 中进行迭代操作,而使用 addAll 或 removeAll ,传入包 含要对其添加或移除元素的集合作为参数,将一个集合 ( 特别是由数组转化而成的 集合) 的内容转移到另一个集合,或者从一个较大对象集合中移除一个较小对象集
7、 合,从而完成成员的增减。迭代可能会出现的问题如下 : , 每次添加或移除元素后重新调整集合将非常低效。 , 每次在获取锁、执行操作和释放锁的过程中,都存在潜在的并发困境。 , 当添加或移除元素时,存取集合的其他线程会引起竞争条件。 5. Map 映射:主要特征是以线性方式存储,集合中可存放重复元素 Thoughts Works 公司 每一个元素包含一个键值对,而且值对象还可以 Map 映射类型,键对象不允许 重复。 Map 的 entrySet()方法返回了一个 Set 集合,这个集合存放了 Map.entry 类型 的元素,每个 Map.Entry 对象代表 Map 中的一个键值对。而 k
8、eySet()方法返回集 合中所有键对象的集合。 主要有两个实现类:HashMap 和 TreeMap,与 Set 的两个 实现类特性和使用须知基本相同。 注意: 永远不要将可变对象类型用作 HashMap 中的键,否则支持哈希码的键依赖于可变字段的内容,这样 hashCode()容易改 变,产生 bug 。 6. 使用的注意事项 : 1) 在泛型中可以使用类似 Set 表示只接受 Object 类型及其子类型。或者 Set 表示接受 String 类型和其父类型。 2) 可以使用更简便的遍历方法以代替 Iterator ,这个增强适用于实现 Iterable 接口的任 ,而不仅仅是 Coll
9、ections: 何对象 for(String element : set) System.out.println(element); 3) Set、List 和 Map 实现类都没有采取同步机制,要注意并发问题。 4) Collections 实用类,使用方法例如 :Collections.sort(list); 直接调用(因 为是静态的嘛 ),注意与 Collection 接口区分。 5) List 在移除一个成员时后一个其 “后面” 的各项会上升填补空位,这可能 是与数组显著的不同吧。 主要掌握的接口 :List , Map List 的实现类 : ArrayList( 遍历集合中元素时,速度较快 增 :add(Object obj); 删 :remove(int index) 按照索引删除元素 获取:get(i nt in dex) 按照索引获取集合中的元素) LinkedList( 比 ArrayList 多了首尾的操作 增:addFirst(Object obj) 在集合首部添加元素; addLast(Object obj) 在集合尾部添加元素 删:removeFirst(); 删除集合中第一个元素 removeLast(); 删除集合中最后一个元素 获取:getFirst(); 获取集合中第一个元素 getLast(); 获取集合中最后一
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 教师招聘之《幼儿教师招聘》复习提分资料及参考答案详解【综合题】
- 教师招聘之《幼儿教师招聘》综合检测提分含答案详解【b卷】
- 编程小明星秀场创新创业项目商业计划书
- 电网故障抢修智能调度系统创新创业项目商业计划书
- 教师招聘之《幼儿教师招聘》练习题(一)含答案详解(模拟题)
- 教师招聘之《幼儿教师招聘》检测卷讲解附参考答案详解(轻巧夺冠)
- 2025年教师招聘之《小学教师招聘》通关练习题库包及参考答案详解(能力提升)
- 教师招聘之《小学教师招聘》题库附答案详解(综合卷)
- 教师招聘之《小学教师招聘》考试黑钻押题【易错题】附答案详解
- 2025年新能源汽车制造产业链上下游企业合作模式研究报告
- 电动机智能运维与健康管理
- 义务教育信息科技课程标准(2022年版)解读
- 空调维保项目进度保障计划
- 大脑动脉狭窄脑梗死的护理查房
- T-GDPIA 21-2020 高转速高转矩同向双螺杆挤出机
- 最常用2000个英语单词-电子表格版
- 老年人常见疾病预防知识讲座
- 《解决方案营销》节选版
- 流感传染的预防与护理知识培训课件
- 秋季慢性病知识讲座
- 2024年全国高考体育单招考试语文试卷试题(含答案详解)
评论
0/150
提交评论