集合面试 arraylist hashmap

LinkedList 底层是双向链表(元素分布在内存的不同地方),每一个节点记录下一个节点的位置(即指针域), 插入/删除元素快,只需要关联指针域(指针域的的牵手分手, 每个节点有2个指针域)即可

链表结构,数据查询的时候,只能从第一个元素开始查询,next指针逐个遍历链表,直到找到附和的元素.移动指针的过程非常耗时,所以查询慢. 

ArrayList (创建连续的内存区域,连续存放元素) 底层是数组实现, 扩容原理,默认大小是10(JDK8源码), 第一次扩容为 1.5×10 +1 =16

查询比较快, 找到第一个元素,根据间隔数目, 就可以找到你要的. 而ArrayList的删除元素,因为有索引, 所以索引也得前移.比较耗时

LinkedList  和 ArrayList  都不安全.

synchronized关键字修饰的方法或代码块,在任意时刻只有一个线程执行

hashmap 原理, 数组 + 双向链表  

数组用来存放每一个entry, 

抽象类和接口都是不能被实例化的 , 实现接口 或 继承抽象类必须重写所有的抽象方法, jdk1.8 接口中可以有具体方法体的方法

static/default String say() { return "hello"}

发布了78 篇原创文章 · 获赞 12 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_29883183/article/details/102917398
今日推荐