20201008_陈宇_
日志
学习总结:
LinkedList:
LinkedList的直接父类是AbstractSequentialList,实现了 List、Deque
LinkedList是一个双向链表,允许存储 null
此实现不同步(非线程安全的)
特点:
删除和增加效率高
ArrayList 和LinkedList:
相同点:都实现了 List 接口,都是有序的、可以重复的、可以存null值得集合
不同点:
ArrayList在随机访问(获取元素时)效率比LinkedList高
在添加元素到末尾时,两个集合效率差不多
在任意位置添加元素时,LinkedList效率更高
在任意位置删除元素时,LinkedList效率高内存, ArrayList使用的是连续空间,LinkedList不一定是连续的空间
推荐优先使用ArrayList
Map:
Map 接口不是 Collection 的子类
Map使用键、值映射表来存储数据
Map 不能有重复的键(重复的键的值会被后面相同名字的键的值覆盖),每个键可以映射到最多一个值
允许将映射内容视为一组键,值集合或键值映射集合
key 不要求有序,value 也不要求有序,但可以重复
当使用对象作为key时,要重写equals和hashCode方法
TreeMap:
继承AbstractMap,一个红黑树基于NavigableMap实现
非线程安全的
key不能存null ,但是value可以存null
key必须是可比较的
Hashtable:
该类实现了一个哈希表,它将键映射到值
不允许null作为键和值
初始容量为11,负载因子为0.75f 初始容量:initialCapacity 负载因子:loadFactor
线程安全的
不保证顺序
扩容方式是旧容量的2倍+1
内部存储方式:数组+链表
HashMap:
基于哈希表的实现的 Map 接口
允许null的键和值
非线程安全
初始容量16,负载因子0.75
扩容是旧容量的2倍
内部采用数组+链表实现 , JDK 8及以后版本增加红黑树的支持
HashMap和Hashtable:
HashMap和Hashtable大致相同
HashMap是不同步的(非线程安全),并允许存储null,其他和Hashtable类似
学习心得:
这两天一直在学集合,学习下来有种它们都差不多的感觉,应该是搞混了,跟着浩哥一起了解它们最基础的东西,感觉有些绕,可能已经绕进去了,还是先把那些方法的用法先记下来吧,后面跟着用法再去理解它们的原理和区别,应该会好一些吧。
近期评论