《面试笔记》

文章讨论了Java中main方法的特性,如可以重载但虚拟机仅调用特定签名的main方法,可以被其他方法调用但需注意栈内存溢出。此外,介绍了数组到list的转换,包括Arrays.asList()方法的限制和Collections.addAll()的高效方式。文章还涉及数据结构,如B+树和红黑树,强调了它们在存储和查找效率上的特点。
摘要由CSDN通过智能技术生成

1:main方法可以重载吗?

可以,但重载后的main方法只是一个普通的方法,虚拟机不会去调用它

2:main能被其他方法调用吗?

 可以调用,但为了防止两个方法来回调用,需要防止它栈内存溢出(执行几次后,停掉虚拟机System.exit(0))

3:main方法可以继承吗?

父类下有一个mian方法,子类能不能继承过来并调用?可以,main方法除了是给虚拟机调用的外也就算一个普通的方法

4:如何实现数组和list集合之间的一个转换?

在开发中数组和容器都可以当作容器来使用,你在做的业务逻辑,把数据存在容器里,别人在使用的时候可能不是这个类型,所以需要在中间做转化

4.1:数组转list集合

4.11:遍历

4.12:Arrays.asList()方法(局限)

数组如果是原始数据类型,需要转为封装类,如int 转为Integer 如果使用原始数据类型直接使用,输出的是地址,因为list集合存放的是数组

通过 Arrays.asList() 方式,将数组转换List后,不能对List增删,只能查改,否则抛异常。

4.13:集合工具类Collections.addAll()方法(最高效)

通过Collections.addAll(arrayList, strArray)方式转换,根据数组的长度创建一个长度相同的List,然后通过Collections.addAll()方法,将数组中的元素转为二进制,然后添加到List中,这是最高效的方法。

需要在将数组转换为List后,对List进行增删改查操作,在List的数据量巨大的情况下,优先使用,可以提高操作速度。

小tips:

List.forEach(System.out::println)

  1. System.out::println 是一个Consumer类型的对象,他的accept方法就是==::前面的对象调用::后面的方法==,即System.out.println();

  2. foreach方法遍历了每一个元素,并调用了System.out::println的accept方法

foreach的源码:

4.13:stream

将集合或者数组对象转换成String流对象;(Collection.stream() Collection;Collection.parallelStream();Arrays.stream(T array) or Stream.of())

4.2:list转数组

直接使用toArray()不带参方法但是其返回值类型为Object,在进行强转的时候会报出java.lang.ClassCastException类转换异常

toArray(T[] a)(推荐)

5:b+数的结构

b 加树是n叉树,是b树的一个变种;

b树与b+树的相同点:

1: 一个节点有多个kv对;

2: 从左到右生序的;

不同点以及b+树的优点:

1: b+树内节点:key是没有对应的data值的

所以它的内节点可以存放更多的key,只需要更少的内节点来构造b+树;层级也会更少,在查找数据的时候需要扫描的节点也会更少

2: b+树所有的key都会出现中叶子节点中(会重复):因为b+树的内节点不存储key对应的data值,它像纪录key-value的数据就必须中叶子结点中重复纪录一份

获得一个完整数据就需要扫描到叶子节点,相对于b树扫描过程更稳定,b树🈶️的时候在扫描到内节点时就得到了完整的kv数据,b+树稳定可预测

b树一个key只会出现在一个节点(内节点或者叶子节点)

3: b+树:相邻的节点有指针相互指向连接(指针是双向的)

数据可顺序的遍历查找

b+树的问题:

key重复出现,更多的占用内存空间

6:红黑树

平衡二叉查找数,它的任意节点左右子树高度相差不大于一即可

根节点是黑色,叶子结点是不存储数据的黑色空节点

任何相邻的两个节点不能同时为红色

任意节点到其可到达的页节点间包含相同数量的黑色节点

这个二叉树满足了这三个条件就是平衡二叉树,它保证了没有一条路径比其他路径长出两倍,树的高度稳定的趋近于logn;所以插入,删除,查找的操作时间复杂度为logn;一颗有n个节点的红黑树的高度,最多为2倍的log(n+1);

对比严格的平衡二叉树,它的查找效率不超过logn,红黑树可能没有它的查找效率高,但是平衡二叉树子插入的时候要保证严格的平衡,每次插入删除的时候都要做复杂的调整;红黑树的叉树和删除就简单多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

admiraldeworm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值