page contents
Nen
Nen - 程序员

性别: 天津 - 天津市 注册于 2021-06-23

向TA求助
2850金币数
43180 经验值
1个粉丝
主页被访问 6250 次

3096 个回答

0 赞同

HashMap 的 get 方法能否判断某个元素是否在 map 中?

HashMap 的 get 函数的返回值不能判断一个 key 是否包含在 map 中,因为 get 返回 null 有可能是不包含该 key,也有可能该 key 对应的 value 为 null。因为 HashMap 中允许 key 为 null,也允许 value 为 null。

回答于 2022-01-20 14:37

0 赞同

HashMap 与 HashTable 的区别是什么?

HashMap 不是线程安全的,而 ConcurrentHashMap 是线程安全的。 ConcurrentHashMap 采用锁分段技术,将整个Hash桶进行了分段segment,也就是将这个大的数组分成了几个小的片段 segment,而且每个小的片段 segment 上面都有锁存在,那么在插入元素的时候就需要先找到应该插入到哪一个片段 segment,然后再在这个片段上面进...

回答于 2022-01-20 14:35

0 赞同

HashMap 与 ConcurrentHashMap 的区别是什么?

HashTable 和 ConcurrentHashMap 相比,效率低。 Hashtable 之所以效率低主要是使用了 synchronized 关键字对 put 等操作进行加锁,而 synchronized 关键字加锁是对整张 Hash 表的,即每次锁住整张表让线程独占,致使效率低下,而 ConcurrentHashMap 在对象中保存了一个 Segment 数组,即将整个 Hash 表划分为多个分段;...

回答于 2022-01-20 14:33

0 赞同

HashTable 和 ConcurrentHashMap 的区别?

HashTable 和 ConcurrentHashMap 相比,效率低。 Hashtable 之所以效率低主要是使用了 synchronized 关键字对 put 等操作进行加锁,而 synchronized 关键字加锁是对整张 Hash 表的,即每次锁住整张表让线程独占,致使效率低下,而 ConcurrentHashMap 在对象中保存了一个 Segment 数组,即将整个 Hash 表划分为多个分段;...

回答于 2022-01-20 14:24

0 赞同

ConcurrentHashMap 的实现原理是什么?

JDK 7:中 ConcurrentHashMap 采用了数组 + Segment + 分段锁的方式实现。 JDK 8:中 ConcurrentHashMap 参考了 JDK 8 HashMap 的实现,采用了数组 + 链表 + 红黑树的实现方式来设计,内部大量采用 CAS 操作。 ConcurrentHashMap 采用了非常精妙的”分段锁”策略,ConcurrentHashMap 的主干是个 Segment 数组。 final  Seg...

回答于 2022-01-20 14:24

0 赞同

HashSet 的实现原理?

HashSet 的实现是依赖于 HashMap 的,HashSet 的值都是存储在 HashMap 中的。在 HashSet 的构造法中会初始化一个 HashMap 对象,HashSet 不允许值重复。因此,HashSet 的值是作为 HashMap 的 key 存储在 HashMap 中的,当存储的值已经存在时返回 false。

回答于 2022-01-20 14:23

0 赞同

throw 和 throws 的区别?

(1)throw:在方法体内部,表示抛出异常,由方法体内部的语句处理;throw 是具体向外抛出异常的动作,所以它抛出的是一个异常实例; (2)throws:在方法声明后面,表示如果抛出异常,由该方法的调用者来进行异常的处理;表示出现异常的可能性,并不一定会发生这种异常。

回答于 2022-01-19 15:41

0 赞同

常见的异常类有哪些?

NullPointerException:当应用程序试图访问空对象时,则抛出该异常。 SQLException:提供关于数据库访问错误或其他错误信息的异常。 IndexOutOfBoundsException:指示某排序索引(例如对数组、字符串或向量的排序)超出范围时抛出。 FileNotFoundException:当试图打开指定路径名表示的文件失败时,抛出此异常。 IOExce...

回答于 2022-01-19 15:41

0 赞同

主线程可以捕获到子线程的异常吗?

线程设计的理念:“线程的问题应该线程自己本身来解决,而不要委托到外部”。 正常情况下,如果不做特殊的处理,在主线程中是不能够捕获到子线程中的异常的。如果想要在主线程中捕获子线程的异常,我们可以用如下的方式进行处理,使用 Thread 的静态方法 Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExcept...

回答于 2022-01-19 15:40

0 赞同

Java 中常用的容器有哪些?

常见容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表 Set TreeSet:基于红黑树实现,支持有序性操作,例如:根据一个范围查找元素的操作。但是查找效率不如 HashSet,HashSet 查找的时间复杂度为 O(1),TreeSet 则为 O(logN)。 HashSet:基于哈希表实现,...

回答于 2022-01-19 15:39