A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 卢祥洲 中级黑马   /  2013-6-19 07:07  /  2633 人查看  /  7 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 卢祥洲 于 2013-6-20 09:01 编辑

刚把集合看完,自己按照老师的集合框架图,自己用visio画了一遍,放云五表示支持哈!
顺便把做的visio原图放到附件里面。



集合.zip (37.96 KB, 下载次数: 107)

集合总结:
List集合列表,元素是有序的(元素带角标索引,判断有序无序标准是:存入和取出的顺序一致),可以有重复元素,可以有null元素。
|--- ArrayList(JDK1.2)
数据结构:底层的数据结构是数组数据结构。
特点:是查询速度快(因为带角标),但是增删速度稍慢,因为当元素多时,增删一个元素则所有元素的角标都得改变。
线程:线程不同步。
长度:默认长度是10,当超过长度时,按50%延长集合长度用来节约空间。                                   
|--- LinkedList(JDK1.2)
数据结构:底层数据结构式链表数据结构(即后面一个元素记录前一个。
特点:查询速度慢,因为每个元素只知道前面一个元素;但增删速度快因为元素再多,增删一个,只要让其前后的元素重新相连即可。
线程:线程是不同步的。                                                        
|--- Vector(JDK1.0)
数据结构:底层数据结构是数组数据结构。
特点:是查询和增删速度都很慢。
线程:线程同步。
长度:默认长度是10,当超过长度时,100%延长集合长度。
取代:Vector功能跟ArrayList功能一模一样,已被ArrayList替代。
枚举:Enumeration en = v.elements();====>Iterator it =a.Iterator();
枚举就是Vector特有的取出方式。

Set集合:元素是无序的(因为没有索引),元素不可以重复。可以有null元素。
|---HashSet(JDK1.2)
数据结构:底层数据结构是哈希表。
特点:存取速度快、元素唯一。
线程:线程不同步。
保证性元素唯一的原理:是通过元素的两个方法,hashCode()和equals()来完成。如果元素的hashCode值相同,才会判断equals是否为true。如果元素的hashCode值不同,不会调用equalsArrayList判断元素是否相同只依赖于equalsSet判断元素是否相同依赖于hashCodeequals。写集合时要覆写hashCode\equals方法。   
|---TreeSet
数据结构:底层数据结构式二叉树。
特点:元素有序、可以对Set集合中的元素进行排序。
线程:线程不同步。
保证性元素唯一的原理:排序时,当主要条件相同时,一定要判断一下次要条件。当两种排序都存在时,以第二种方式比较器为准。
TreeSet排序的第一种方式:元素本身需要实现Comparable接口,覆盖compareTo方法。让元素自身具备比较性,比如八种基本数据类型或则字符串,实现Compareble接口,覆盖compareTo方法,这种方式也称为元素的自然顺序或者叫默认顺序。
TreeSet排序的第二种方式:另外定义一个类,实现Comparator接口,覆盖compare方法。当元素自身不具备比较性(比如存储学生对象时)或者具备的比较性不是我们所需要的比较性时(比如想字符串的长度排序),此时就需要让集合自身具备自定义的比较性。那如何让集合自身具备比较性呢?可在集合初始化时,就让集合具备比较方式。即定义一个类,实现Comparator接口,覆盖compare方法。

Map集合:该集合存储的是键值对,而且键是唯一的,Map和Set很像,Set集合底层就是使用了Map集合。Map集合没有迭代器,要取出元素必须先将Map集合转换成Set集合才能遍历元素。Map和Set很像,其实Set底层就是使用了Map集合。
|---HashTable(JDK1.0):
底层是哈希表数据结构;
不可以使用null键和null值;
用作键的对象必须实现hashCodeequals方法来保证键的唯一性
线程同步,效率低。
|---HashMap(JDK1.2)
底层是哈希表数据结构;
允许使用null键和null值;线程不同步,效率高;除了这2点相同外,其余HashMapHashMap差不多。
保证元素唯一性的原理:先判断元素的hashCode值是否相同,再判断两元素的equals方法是否为true。往HashSet里面存的自定义元素要覆写写hashCodeequals方法,以保证元素的唯一性!
|---TreeMap(JDK1.0)
底层是二叉树结构;
允许使用null键和null值;
线程不同步;
可以给Map集合中的键进行排序。
TreeMap排序的第一种方式:让元素自身具备比较性,比如八种基本数据类型或则字符串,实现Compareble接口,覆盖compareTo方法,此方式是元素的自然顺序。
TreeMap排序的第二种方式:当元素自身不具备比较性(比如存储学生对象时)或者具备的比较性不是我们所需要的比较性时(比如想字符串的长度排序),此时就需要让集合自身具备自定义的比较性。那如何让集合自身具备比较性呢?可在集合初始化时,就让集合具备比较方式。即定义一个类,实现Comparator接口,覆盖compare方法。
Map扩展
映射关系可以为:一对多、集合的嵌套。

评分

参与人数 2技术分 +1 黑马币 +1 收起 理由
雨中的台北 + 1 很给力!
曹睿翔 + 1 不错不错

查看全部评分

7 个回复

倒序浏览
总结的不错哟   赞一个{:soso_e100:}
回复 使用道具 举报
总结的好详细!学习了
回复 使用道具 举报
原创很精致,很用心,也很辛苦!谢谢分享!
回复 使用道具 举报
OK                        
回复 使用道具 举报
{:soso_e179:}
回复 使用道具 举报
DxxD 中级黑马 2015-3-23 15:52:00
7#
看一看。。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马