版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、java 集合总结java 集合总结(一)一、数组、集合数组、集合:都是一种容器,用一个对象管理多个对象;数组:不能自动增长;只能存放同类型的元素集合:能自动扩容;部分集合允许存放不同类型的元素;二、学习这些集合类要掌握哪些东西:1)怎样得到(选择)集合对象;2)怎样添加元素3)怎样删除元素4)怎样循环遍历没一个元素3、 list 、 set 、 mapcollection: 父接口;Set: 接口 - 一个实现类: HashSetList: 接口 - 三个实现类: LinkedList,Vector,ArrayListSortedSet: 接口 - 实现类: TreeSet1、 List:L
2、ist: 有序列表,允许存放重复的元素;实现类:ArrayList : 数组实现, 查询快, 增删慢, 线程不安全, 轻量级;下标也是从0 开始;LinkedList :链表实现,增删快,查询慢Vector :数组实现,线程安全,重量级2.Set:无序集合,不允许存放重复的元素;实现类HashSet: equals返回true , hashCode返回相同的整数; 哈希表;子接口 SortedSet : 对 Set 排序实现类:TreeSet : 二叉树实现的;看API:泛型:表示一个对象;Iterator: 接口,迭代器;java.util ;hasNext();next();remove(
3、);Iterable: 可迭代的,访问的;ng; 实现了可迭代的接口就可以用迭代的方式访问;只需实现 iterator(); 方法即可; Iteratoriterator();三种循环的访问方式:只有实现了 Iterable 接口的才能用第三种;能用第二种的也一定能用第三种;ArrayList: 自动扩容,是数组照搬过来的;3.MapHashMap键值对,key不能重复,但是value可以重复;key的3 / 10实现就是HashSet; value 对应着放;HashSet的后台有一个HashMap初始化后台容量;只不过生成一 个HashSet的话,系统只提供key的访问;如果有两个Key
4、重复,那么会覆盖之前的;Hashtable: 线程安全的Properties:java.util.Properties;key和 value 都是 String类型,用来读配置文件;HashMapW Hashtable 区另U:HashMa像程不安全的,允许 null作为key或value;Hashtable 线程安全的,不允许null 作为 key 或 value;TreeMap:对 key 排好序的 Map;key 就是 TreeSet,value 对应每 个 key;key要实现Comparable接口或TreeMap有自己的构造器;HashSet:remove(Objecto) 的原则
5、看这个对象O 的 Hashcode 和equals 是否相等,并不是看是不是一个对象;定义一个Map;key是课程名称,value是Integer表示选课人数;map.put(cou,map.get(cou)+newInteger(1);4、 Hashtable 、 Properties1, Hashtable :实现了 Map® 口,此类实现一个哈希表,作用和 HashMapffi同。任何非null对象都可以用作键或值。为了成功地在 哈希表中存储和获取对象,用作键的对象必须实现hashCode 方法和2, Properties : 继承自 Hashtable , 比 Hashtab
6、le 更严格属性列表中每个键及其对应值都是一个字符串。常 用 方 法 StringgetProperty(String?key) 和 setProperty(Stringkey,Stringvalue);用法:我在C盘下建了一个名为yy.dat的文件,文件的内容为:name=hehepassword=12345执行以下程序,输出hehe,可见用Properties可以很方便的解析配置文件Propertiesp=newProperties();p.load(newFileInputStream("C:yy.dat");System.out.println(p.getPrope
7、rty("name")五、两个工具类Arrays 和 Collections1 .Arrays 、此类包含用来操作数组(比如排序和搜索)的各种方法。此类还包含一个允许将数组作为列表来查看的静态工厂2 .Collections 、 主要提供了在collection 上进行操作的静态方法六、遗留的几个类1 .Hashtable,作用和HashMa"目同,不过它是线程安全的,如果不需要线程安全,应该使用 HashMap2 .Enumeration, 遗留集合使用枚举接口来遍历元素, 它有两个方法 ,hasMoreElements 和 nextElement ,用法类似I
8、terator 。3 .Stack, 继承自 Vector ,实现了栈的功能,提供了 push() 方法押栈和 pop() 方法出栈。4 .BitSet, 位集。如果需要高效率的存储一个位序列,例如一个标志序列,请使用位集。它可以对各个位进行读取 get(i)设置 set(i)清楚 clear(i)七、常见笔试题目汇总1 .Collection 和 Collections 的区别。Collection 是集合类的上级接口, 继承与他的接口主要有Set 和List.Collections 是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。2 .List,
9、Set,Map 是否继承自 Collection 接口 ?List , Set 是,Map不是3 . 两个对象值相同 (x.equals(y)=true) ,但却可有不同的hashcode,这句话对不对?不对,有相同的 hashcode。4 . 你所知道的集合类都有哪些?主要方法?最常用的集合类是List和Map List的具体实现包括ArrayList和 Vector , 它们是可变大小的列表, 比较适合构建、 存储和操作任何类型对象的元素列表。 List 适用于按数值索引访问元素的情形。Map提供了一个更通用的元素存储方法。Map集合类用于存储元 素对(称作"键 "和&
10、quot;值"),其中每个键映射到一个值。5 .排序都有哪几种方法?请列举。用JAVA实现一个快速排序。排序的方法有:插入排序(直接插入排序、希尔排序) ,交换排 序(冒泡排序、快速排序) ,选择排序(直接选择排序、堆排序) ,归 并排序,分配排序(箱排序、基数排序)快速排序的伪代码。/ 使用快速排序方法对a0:n-1 排序从 a0:n-1 中选择一个元素作为 middle ,该元素为支点把余下的元素分割为两段left 和 right ,使得 left 中的元素都小于等于支点,而right 中的元素都大于等于支点递归地使用快速排序方法对left 进行排序递归地使用快速排序方法对rig
11、ht 进行排序所得结果为 left+middle+right6 .HashMap和 Hashtable 的区别都属于Map接口的类,实现了将惟一键映射到特定的值上。HashMap没有分类或者排序。它允许一个null键和多个null值。Hashtable类似于HashMap但是不允许null键和null值。它 也比HashMapft,因为它是同步的。7.Set 里的元素是不能重复的,那么用什么方法来区分重复与否呢 ?是用 =还是equals() 它们有何区别 ?Set 里的元素是不能重复的, 那么用 iterator() 方法来区分重复 与否。equals() 是判读两个Set 是否相等。equ
12、als() 和=方法决定引用值是否指向同一对象equals() 在类中被覆盖, 为的是当两个分离的对象的内容和类型相配的话, 返回真 值。java 集合总结(二)java 集合类主要负责保存、 盛装其他数据, 因此集合类也称容器类。 java 集合类分为: set 、 list 、 map、 queue 四大体系。其中 set 代表无序、不可重复的集合;list代表有序、可重复的集合。map代 表具有映射关系的集合;queue代表队列集合。java集合类主要由两个接口派生:Collection 和Map是集合 框架的根接口。下面是其接口、子接口和实现类的继承树。下面就一一介绍四大接口及其实现类
13、。Set 接口。 set 集合不允许包含相同的元素。 set 判断两个对象是否相同是根据equals 方法。 如果两个对象用 equals 方法返回的是true , set 不会接受这两个对象。HashSet是set接口的典型实现,HashSet按hash算法来存储集合中的元素。因此具有很好的存储和查找性能。 HashSet 判断两个元素的标准是两个元素的 equals 方法比较相等,同时两个对象的hasCode()方法返回值也相等。HashSet可以保存null元素。List 集合代表一个有序集合。集合中的每个元素都有其对应的顺序索引。 Arraylist 和 vector 是 list 接
14、口的两个典型实现。他们之间的显着区别就是: vector 是线性安全的, 而 arraylist 不是。 它 们两个都是基于数组实现的 list 类。 List 还有一个基于链表实现的LinkedList 类。 当插入、 删除元素的速度非常快。 这个类比较特殊,功能也特别多,即实现了 List接口,也实现了 Dueue接口(双向队 列) 。可以当成双向队列使用,也可以当成栈使用。Queue用于模拟队列的数据结构。LinkedList 和ArrayDueue是 其两个比较常用的实现类。Map用于保存具有映射关系的数据。Map接口有如下几个常用的 实现类:HashMap、 HashTable、 T
15、reeMap。 TreeMap 是基于红黑树对TreeMap中所有key进行排序。HashMa琲口 HashTable主要区别有两 点:1、Hashtable是线性安全的,因此性能差些。2、HashMap可以 使用 null 作为 key 或者 value 。集合类还提供了一个工具类Collections 。 主要用于查找、 替换、同步控制、设置不可变集合。上面是对java集合类的一般概述,下面就set、list、map三者 之间的关系进行剖析。Set与Map的关系。Map集合中所有key集中起来,就组成了一 个set集合。所以Ma睐合提供SetkeySet()方法返回所有key组成 的set
16、集合。由此可见,Mapft合中白所有key具有set集合的特征, 只要Map所有的key集中起来,它就是一个Set集合,这就实现了 Map到Set的转换。同时,如果把Map中的元素看成key-value的set集合,也可以实现从 Set到Map之间的转换。HashSet和HashMa吩别作为它们的实现类。两者之间也挺相似的。 HashSet 的实现就是封装了 HashMap寸象来存储元素。它们的本质是一样的。类似于HashSet 和HashMap!勺关系,其实TreeMap和TreeSet本质也差不多,TreeSet 底层也是依赖TreeMap实现。Map与List的关系。把Map的key-v
17、alue分开来看,从另一个 角度看,就可以把Map与List统一起来。Mapft合是一个关联数组,key可以组成Set集合,Map中的value可以重复,所以这些 value 可以组成一个List 集合。但是需要注意的是,实质Map的values方法并未返回一个List集合。而是返回一个不存储元素的 Collection 集合, 换一种角度来看对List 集合, 它也包含了两组值, 其中一组就是虚拟的 int 类型的索引, 另一组就是list 集合元素,从这个意思上看, List 就相当于所有key 都是 int型的 Map。下面讲解几个相似类之间的差异。ArrayList 和 LinkedList 。 ArrayList 是一种顺序存储的线性表,其底层是采用数组实现的,而 LinkedL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 旅行社与导游劳动合同范本
- 2023年高考地理第一次模拟考试卷-(湖南A卷)(全解全析)
- 房地产代理合同模板
- 2024年建筑渣土运输合同范文
- 插画设计合同范本2024年
- 合作经营协议合同范本
- 医院科室承包合同书2024年
- 酒店客房预订协议书模板
- 常州市物业管理委托合同样本
- 家具代理合同格式
- 上海市市辖区(2024年-2025年小学四年级语文)部编版期末考试(下学期)试卷及答案
- 认识梯形(课件)四年级上册人教版
- 企业级SaaS软件服务合同
- 【期中考后反思】《反躬自省,砥砺奋进》-2022-2023学年初中主题班会课件
- 2019新教材人教版生物必修1教材课后习题答案
- 2024年中国白酒行业数字化转型研究报告-36氪-202409
- 《学校主人公:3 校园广播站》教学设计-2024-2025学年五年级上册综合实践活动沪科黔科版
- 外伤急救包扎技术说课课件
- 人教版(2024新版)七年级上册英语全册语法知识点讲义
- 全国青岛版信息技术七年级下册专题一第8课三、《高级统计-数据透视表》教学设计
- 内分泌科品管圈成果汇报提高糖尿病患者健康教育知晓率
评论
0/150
提交评论