【面试复习】

1. java基础

1.1 java8新特性之lambda表达式在这里插入图片描述

1.2 Stream API

使用Stream API 对集合数据进行操作,查找、过滤和映射数据等操作。
1 创建 Stream:Arrays.stream(arr)、list.stream();
2 中间操作:过滤、映射、排序
3 终止操作(终端操作) :对流执行收集的操作(如收集到 List、Set、Map)。

1.3 自动拆箱

[-128,127]的时候,会直接返回Integer缓存数组中相应对象的引用,这种缓存行为是由Integer类内部的IntegerCache实现的。当使用自动装箱创建Integer对象时,如果值在-128到127之间,它会从缓存中获取已有的对象引用,而不是创建新的对象。如果i大于127或小于-128,会重新创建一个Integer实例,并返回。

1.4 集合框架

List:集合是以一种线性方式进行存储的,可以重复,通过通过元素的equals方法,来比较是否为重复的元素。

List接口的主要实现类
ArrayList:动态数组
Vector:动态数组
LinkedList:双向链表
Stack:栈

ArrayList源码口述:arraylist
在jdk8之后,arraylist默认会初始化一个空的数组(动态数组),当调用add方法时,初始化容量为10,数组扩容默认会扩大到原来的1.5倍。

HashMap:底层是一个哈希表(jdk7:数组+链表;jdk8:数组+链表+红黑树)

口述原理:调用key1所在类的hashCode()方法,计算key1的哈希值1,此哈希值1再经过某种运算(hash()),得到哈希值2。此哈希值2再经过某种运算(indexFor()),确定在底层table数组中的索引位置i。
(1)如果数组索引为i上的数据为空,则(key1,value1)直接添加成功 ------位置1
(2)如果数组索引为i上的数据不为空,有(key2,value2),则需要进一步判断:
判断key1的哈希值2与key2的哈希值是否相同:
(3) 如果哈希值不同,则(key1,value1)直接添加成功 ------位置2
如果哈希值相同,则需要继续调用key1所在类的equals()方法,将key2放入equals()形参进行判断
(4) equals方法返回false : 则(key1,value1)直接添加成功 ------位置3
equals方法返回true : 默认情况下,value1会覆盖value2。

红黑树出现的时机:当某个索引位置i上的链表的长度达到8,且数组的长度超过64时,此索引位置上的元素要从单向链表改为红黑树。
如果索引i位置是红黑树的结构,当不断删除元素的情况下,当前索引i位置上的元素的个数低于6时,要从红黑树改为单向链表。

数组与ArrayList区别在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值