集合Collection和Map总结

Collection 接口是Iterable的子接口,该接口下的子接口是List和Set

 

 

 

List: 可重复,有序

常用的List的实现类:ArrayList、 Vector、LinkedList

ArrayList:

异步、查询速度快、增删速度慢、不安全、基于数组、可重复、有序,其中顺序是存储的顺序。

ArrayList 是一个对象数组,每次增加的时候 会为数组扩容,数组长度是不能改变的,每次扩容数组内容拷贝的工作 ,ArrayList如果频繁增加内容,效率不高, 但是查询的时候由于底层使用的是数组,所以查询效率会高,发现自定义类的时候,必须覆写equals方法才能完成集合中 对象查找和删除,主要原因是在于进行对象删除或者查找的时候 集合中会判断传入的元素和集合本身的元素是否是内容相同的元素 只有相同才会删除或者查找

Vector:

同步的,查询速度快,增删速度慢,安全

LinkedList:

查询速度慢、增删速度快、基于链表

Set:不可重复

常用的set的实现类:TreeSet、HashSet

TreeSet:

有序、不可重复

1.为什么TreeSet能实现有序?

TreeSet的排序是通过compreable 接口中的compareTo方法完成的 该方法返回 3个取值

分别为: 1 升序   - 1 降序   0 重复元素的判断

TreeSet中进行保存的时候,约定存储的类型必须实现一个接口,而这个接口就是comparable接口,如果没有这个接口则不能实现排序功能

2.不可重复

重复元素的区分 在TreeSet中是依靠compareTo方法是否返回0来判断

 

HashSet:

HashSet是set的实现类中使用最多的一个实现类、无序、不可重复、通过hashcode和equals方法判断重复元素

HashCode通过一些运算把复杂的对象,主键,转换为数组的下标arrayindex进行存储

HashCode设计原理的三大特性:

1.确定的,hashcode值是一定的,对象.hashCode 该对象无论调用多少次这个hashCode方法得出的结果 一定是一样的

2.高效的    哈希算法一定不能是复杂的

3 均匀分布的

 

Map接口,是独立于Collection的接口 

常用的Map实现类有 HashMap、HashTable、LinkedHashMap、TreeMap

HashMap:

在hashMap中 Key值是不能重复的, value是可以重复的,  如果出现了相同的key 之前的key 会被覆盖掉,其实对于put的方法也是存在返回值的 当存储的key在map集合中不存在则返回null  如果存在相同的key 返回上一个相同key的value,无序

HashMap在集合的使用中是最常用的,但是它的特点是存放的数据是无序的,而如果现在想要存放的数据为有序的map集合 则可以使用LinkedHashMap完成 (有序  存放的顺序)既然是链表的保存,其保存的数据量一般不会太大

HashTable:

HashTable 线程安全  同步处理   效率低    key   和  value  都不允许为null

LinkedHashMap:

HashMap 非线程安全, 异步处理  效率高   key  和  value 都允许为null  

TreeMap:

可以按照key进行排序,使用这个类的时候一定要配合一个接口:Comparable 接口

Map.Entry接口:

在Map集合中 key是不可重复的,treeMap 有序的  HashMap 是无序的 和Set集合非常的相似 key底层和set实现的原理是一样的 所以实际上map和set是可以相互转换的

Map.entry 里面存放的是 key  value

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值