程序员基本功03常见JAVA集合的实现细节

笔记笔记自己看的

1、Set和Map的关联之处

Set代表一种集合元素无序、不可重复的集合,Map代表一种由多个键值对组成的集合。Map集合的Key之间不能重复且无序,也就是说,把map里的key单列出来是set集合。

2、Hash存储机制的快速存取原理

系统采用Hash算法决定集合元素的存储位置,保证快速存取集合元素

3、红黑树的快速访问机制

 红黑树是一种自平衡二叉查找树,树中每个节点的值,都大于或等于在它左子树中的所有节点的值,并且小于或等于在它的右树中所有节点的值,这确保红黑树运行时可以快速查找和定位所需点。

4、Map和List的相似性

 map接口提供了get(K key)方法允许map对象根据key取得value;list接口提供了get(int index)方法允许list对象根据元素索引取得value。list相当于所有key都是int类型的map,也可以说map相当于索引是任意类型的map

5、List集合代表线性表

6、LinkedList集合底层的链表实现

https://blog.csdn.net/LZJLZJLZJLZJLZJLZJ/article/details/52278461

7、不同集合类对Iterator提供实现类

iterator是一个迭代器接口,专门用于迭代Collection集合,包括set集合和list集合。iterator迭代器接口只有一个scanner实现类。显然scanner并不能用于迭代set、list集合。

set集合对应的iterator,都是对应map的内部类KeyIterator(EnumSet集合的Iterator是RegularEnumSet的一个内部类)

arraylist和vector的实现基本相同,除了arrayList是线程不安全,Vector是线程安全的,他们的iterator是AbstractList的内部类Itr。

linkedlist集合对应的Iterator是其内部类ListItr

ArrayDeque集合对应的Iterator是ArrayDeque$DeqIterator。

8、 HashMap底层的Hash存储机制

在存储时,系统将调用JAVA对象的hashCode()方法,得到其hashCode值,然后根据hashCode值来决定元素的存储位置。

9、TreeMap底层的红黑树存储机制

每向treemap中放入一个key-value对,系统会将该entry当成一个新节点,添加到已有红黑树中,保证key的有序。红黑树是一种自平衡二叉查找树,树中每个节点的值,都大于或等于它在左子树中所有节点的值,小于等于右子树节点的值,这确保红黑树运行时快速地查找和定位所需节点。

10、Set实现的底层依然是Map

11、Map的values()方法的返回值

返回值包含map中所有value的集合,但他们并不是list对象

12、arrayList集合底层的数组实现

https://blog.csdn.net/dingji_ping/article/details/51014914

https://blog.csdn.net/u012877472/article/details/50852933

13、ArrayList和LinkedList在不同场景下的性能差异

 list代表一种线性表的数据结构,arraylist则是一种顺序存储的线性表。其底层采用数组来保存每一个元素,linkedlist则是一种链式存储的线性表。其本质是一个双向表,不仅实现了list接口,还实现了Deque接口,也就是说Linkedlist既可以当成双向链表使用,也可以当队列使用,还可以当成栈来使用。

arraylist删减元素性能差,查询快;linkedlist相反;

14、不同集合在Iterator迭代时产出元素的行为差异

 iterator迭代器只负责各种集合所包含的元素进行迭代,它自己并没有保留集合元素,因此迭代时,不应该删除集合元素,否则引发concurrent modificationException异常。对于ArrayList、Vector、LinkedList等List集合来说,当Iterator遍历他们倒数第二个元素时,使用list集合的remove()方法删除集合的任意一个元素,不会引发异常,当正在遍历其他元素时就和引发异常。对于TreeSet、HashSet等Set集合而言,当Iterator遍历最后一个元素时,不发生异常。 

https://www.jianshu.com/p/ebf037d54661

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值