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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Lust

初级黑马

  • 黑马币:33

  • 帖子:16

  • 精华:0

© Lust 初级黑马   /  2018-5-3 10:36  /  616 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

List 集合
List实现的超级父类接口:Collection
1.ArrayList:
可变数组,通过角标操作
底层结构是数组
插入,删除较慢,查找很快
2.LinkedList:
底层结构是双向链表
插入,删除很快,查找很慢

Map 集合
Map没有实现的超级父类接口,不是Collection的直接接口子类
HashMap Hashtable TreeMap区别
1、HashMap:允许null键null值  Hashtable:不允许null键null值  TreeMap:允许null值不允许null键
2、TreeMap的输出会按照key默认排序(根据ASCII码表)
3、HashMap非同步处理  速度快 不安全     Hashtable   同步处理速度慢 安全 Hashtable并发性不如ConcurrentHashMap,
不需要线程安全的场合可以用HashMap替换,需要线程安全的场合可以用ConcurrentHashMap替换。

4、HashMap底层结构是数组+链表+红黑树(JDK1.8加入),存入键值对时会先算出一个hashcode(),存进去,当另外一个键值对的hashcode()值与它相同时,
就会用Entry(壳子)对它们进行封装加以区别,新添加进来的放在旧的前面<Entry2,Entry1>---通过链表索引来取,当链表长度太长(默认超过8)时,
链表就转换为红黑树,利用红黑树快速增删改查的特点提高HashMap的性能。HashMap初始化长度length(默认值是16),Loadfactor为负载因子(默认值是0.75),其扩充原理请自行查看源码。

5、HashMap的输出是无序的,被存入到 HashMap 中的元素,在遍历 HashMap 时,其输出是无序的。如果希望元素保持输入的顺序,
可以使用LinkedHashMap替代。LinkedHashMap 继承自 HashMap,具有高效性,同时在 HashMap 的基础上,又在内部增加了一个链表,
用以存放元素的顺序。LinkedHashMap是根据元素增加或者访问的先后顺序进行排序,而 TreeMap 则根据 元素的 Key 进行排序。

Set 集合
Set实现的超级父类接口:Collection
1.set中没有角标
2.set中的元素不允许重复,相同元素只会输出1个
3.TreeSet有自己的排序,当放的是对象时,排序对象要实现比较器Comparable
4.HashSet的底层数据结构是HashMap,HashSet中插入数据时的顺序和输出数据时的顺序无关。

HashSet的查重规则
1.hashCode():通常会拿着对象的各个属性值运算出一个得数 ---如果2个对象得数不相等,那么2个对象的属性必然不全部相同。
先使用hashCode()方法进行比较,如果hashCode()值不相等,则2个对象可以直接判定不等但是,如果hashCode()值相等,却不能判断2个对象一定相等,进而再去用equals方法比较各个属性值
2.equals():比较2个对象相等----复写之后就是在比较2个对象的各个属性值是否全都相等,如果equals()判定为不等,即为不等,判定为相等,最终才相等。
之所以这样做,是为了提高集合的使用效率

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马