1.面向对象的特点
继承(复用性)、封装(复用性)、多态(可移植性、灵活性)
2.ArrayList与LinkedList区别
ArrayList和LinkedList都是实现了List接口
ArrayList底层是动态数组
LinkedList底层是链表,每个节点存储数据和指向下一个节点的指针及上一个节点的指针
查询时:ArrayList速度比LinkedList快,因为读取数组下标即可。
新增/删除时: LinkedList比ArrayList快,因为该节点的下一指针修改,同时下一节点的前指针修改即可。
3.高并发问题
线程安全 Vector、Hashtable 使用synchronized修饰方法
非线程安全 ArrayList、HashMap
需要使用线程安全时,使用 Collections.synchronizedList、Collections.synchronizedMap;
高并发集合类
ConcurrentHashMap通过细粒度的锁分离机制实现并发安全,允许多个线程同时读取,写操作是互斥的,实现读写分离。
写操作:采用加锁操作实现,不可多个线程同时写入
读操作:未加锁,可多个线程读取
CopyOnWriteArrayList通过复制机制实现并发安全,采用读写分离方式
写操作:通过创建一个新的数组,然后将原始数组复制到新数组中
读操作:直接根据下标获取动态数据的数据
4.jdk1.8新特性
接口默认方法:接口中可以实现方法,需要加关键字 default
Lamba表达式
常用lambda表达式 lambda表达式