集合小结

数组:
1:长度受到限制,无法改变长度
2:存储类型单一
集合:解决了数组长度及类型的问题
Java的集合分两种 List,set 
Iterable :Java集合的最顶级元素,是一个接口其内部定义了一个iterator 迭代器。
Collection:继承于Iterable是;list,set的直接父接口其内定义了一些集合常用方法(增,删,判断等)
List: 接口,继承于Collection其内定义了一些集合常用方法(增,删,判断等);
list的实现子类(有序:先入后出,可重复):
ArrayList:继承于list接口 并继承AbstractList抽象类,由于地层基于动态数组实现,所以查询速度较快(根据下标直接取)
但是由于数组下标问题插入,删除较慢(需要移动下标),arrayList初始容量为10,其后每次扩容为1.5倍。
Vector:继承于list接口 并继承AbstractList抽象类。
LinkedList:基于双向链表实现,里面除了数据意外还存放了 上一个及下一个节点的引用。由于其实现基于链表所以在
插入,插叙的时候速度较快(因为不需要管其他节点),但是在查询的时候速度较慢(因为要遍历所有节点)。
ArrayList与Vector的区别:两者底层实现都是数组,但是由于Vector其中大部分方法都被synchronized修饰,
所以Vector线程是安全的同时效率较为低下,而ArrayList虽然线程不安全但是效率高。
Map:map 虽然算是集合框架的一部分,但是其并没有继承Collection接口,并且其继承结构与List,Set不同。Map是键值对
的存在  key  value,查找元素的时候根据Key的值来去除Value 的值,所以其Key 不能重复。
hashMap: 在添加数据的时候,会判断key的hash值是否相同,并且使用equals方法判断对象是否是同一个,如果key相同
则判断value是否一致,当key相同value不同时执行value覆盖的操作。由于hashMap是根据hashcode方法与equals方法
来判断key的值是否重复,所以当我们使用自定义数据类型的时候需要重写这两个方法。
hashTable: 操作与HashMap 基本一致,但是NULL 的支持不同,并且底层有很多不一样的地方。
hashMap 与 hashTable 的区别:
1:作者不同,两个类不是同一个人编写的。
2:产生时间不同hashTable是JDK1.0出现的而HashMap 是JDK1.2出现的。
3:继承的父类不同,hashTable继承于Dictionary<K,V> hashMap继承于AbstractMap<K,V>
4:方法不同,hashTable比HashMap多了两个方法,elements()与contains方法(contains方法被hashMap重新实现)。
5:key,value 对null的支持不同  hashTable不支持null 而hashMap 支持Null
6:线程安全不同 hashTable 线程安全  而hashMap线程不安全
7:计算hash值方法不同
8:初始容量及扩容不同: hashTable的初始容量是11,每次扩容是2N+1 而 hashMap初始容量为16每次扩容为2N。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值