言情小说尽在御龙小说网!御龙小说网手机版

小说首页 > 都市言情 > 蓝星文娱:从微末崛起的娱乐大亨 >第十一章(集合框架篇)2024年Java求职面试与工作编程要点实录25(1 / 2)
  • 手机阅读本书

第十一章(集合框架篇)2024年Java求职面试与工作编程要点实录25(1 / 2)

【Java集合框架的3个核心问题】

1、比较ArrayList、LinkedList和Vector的异同?

2、谈谈HashMap和TreeMap的实现原理?

3、如何选择合适的集合类?

……

第四篇:集合框架(3个)

1、比较ArrayList、LinkedList和Vector的异同?

相同点:

三者都实现了List接口,存储数据的方式都是基于动态数组的形式。

当元素数量超过当前数组长度时,会在内存中分配一块更大的内存…

将原有数组中的数据复制过去,释放原数组,然后将新元素放到新数组中。

不同点:

1)ArrayList和Vector是动态数组,LinkedList是双向链表。

2)ArrayList和Vector支持随机访问元素,而LinkedList不支持。

3)ArrayList在内存不足时,扩容为原来的1.5倍,Vector扩容为原来的2倍。

而LinkedList在内存上更加优化,因为LinkedList的节点不需要连续存储。

4)ArrayList和LinkedList不是线程安全的,而Vector是线程安全的。

2、谈谈HashMap和TreeMap的实现原理?

HashMap和TreeMap,是Java中两种常用的Map实现。

它们各自有着,独特的实现原理和使用场景。

一、HashMap:

HashMap是基于哈希表实现的Map接口。

它允许使用null键和null值。

HashMap不保证映射的顺序,特别是它不保证该顺序恒久不变。

HashMap的实例,有两个参数影响其性能,即初始容量和加载因子。

初始容量,是哈希表在创建时的容量;

加载因子,是哈希表在其容量自动增加之前,可以达到多满的一种尺度。

当哈希表中的条目数,超过了加载因子与当前容量的乘积时…

哈希表就会进行rehash操作;

也就是创建一个新的数组,然后将原数组中的数据,重新映射到新数组中。

HashMap的核心数据结构,是一个Node数组。

每个Node,都保存了键值对信息,以及指向下一个Node的引用。

在HashMap中,通过key的hashCode经过一定的计算后得到数组下标…

然后,在对应的数组位置上,进行存储。

如果,计算出的数组下标位置,已经存在元素,那么就在这个位置形成链表。

当链表长度太长(默认是8)时,链表就转换为红黑树,这样可以大大提高查询的效率。

二、TreeMap:

TreeMap是基于红黑树实现的Map接口。

它根据键的自然顺序,对键进行排序;

或者根据创建TreeMap时,提供的Comparator进行排序,具体取决于使用的构造方法。

TreeMap不允许使用null键。

红黑树,是一种自平衡的二叉查找树;

通过对任何一条,从根到叶子的路径上,各个节点着色的方式的限制;

红黑树确保从根到叶子的最长的可能路径,不会超过最短可能路径的两倍长。

这种特性,使得红黑树在插入、删除和查找操作中,都保持了相对稳定的性能。

在TreeMap中,每个键都关联一个值。

你可以使用put(key,value)方法,将键值对添加到映射中;

使用get(key)方法,获取与指定键关联的值。

TreeMap的键集合(keySet方法返回)按照键的排序顺序(升序或降序)进行迭代。

TreeMap的键和值都不能为null。

三、综上所述

HashMap和TreeMap的主要区别,在于其内部实现机制、性能特点以及使用场景。

HashMap适用于需要快速插入、删除和查找的场景。

而TreeMap,则适用于需要按照键的排序顺序,进行操作的场景。

3、如何选择合适的集合类?

在Java中,选择合适的集合类,对于程序的性能和正确性至关重要。

Java提供了丰富的集合类,每种集合类都有其特定的用途和性能特点。

小提示:按 回车[Enter]键 返回章节目录,按 ←键 返回上一页, 按 →键 进入下一页。
查看目录