java基础知识(2)

java中的HashMap的工作原理是什么?
        java中的HashMap是以键值对的形式存在的。HashMap需要一个hash函数,它使用hashCode()和equals()方法来向集合添加和检索元素,当调用put()方法时,
HashMap会计算key的hash值,然后把键值对存储在集合中合适的索引上。如果key已经存在了,value会被更新成新值。HashMap还有一些重要特性:它的容量capacity,负载因子load factor和扩容极限threshold reszing

hashCode()和equals()方法的重要性体现在哪些方面?
        java中的HashMap使用hashCode()和equals()方法来确定键值对的索引,当根据键获取值的时候也会用到这两个方法。如果没有正确的实现这两个方法,两个
不同的键可能会有相同的hash值,因此,可能会被集合人为是相等的。而且,这两个方法也用来发现重复元素。所以这两个方法的实现对HashMap的精确性和正确性是
至关重要的。

HashMap和Hashtable有什么区别?
        HashMap和Hashtable都实现了Map接口,因此有很多相似的特性。但是有以下不同点:
        HashMap允许键值为null,而Hashtable不允许键值为null.
        Hashtable是线程安全的,HashMap不是线程安全的
        HashMap提供了可供应用迭代的键的集合。另一方面,Hashtable提供了对键的列举(Enumeration)

数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用Array而不是ArrayList?
        不同点:
                Array可以包含基本类型和对象类型,ArrayList只能包含对象类型
                Array大小是固定的,ArrayList的大小是动态变化的
                ArrayList提供了等多的方法和特性,比如:addAll(),removeAll(),iterator()等等
                对于基本类型数据,集合使用自动装箱来减少编码工作量。但是,当处理固定大小的基本数据类型的时候,这种方式相对较慢。
                
ArrayList和LinkedList有什么区别?
        ArrayList和LinkedList都是线了List接口,他们具有以下不同点:
                ArrayList是基于索引的数据接口,它的底层是数组。他可以在O(1)时间复杂度对元素进行随机访问。与此同时,LinkedList是以元素列表的形式存
储它的数据,每一个元素都和它的前一个和后一个元素链接在一起,在这种情况下,查找某个元素的时间复杂度是O(n).
                LinkedList比ArrayList更占内存,因为LinkedList为每一个结点存储了两个引用,一个指向前一个元素,一个指向下一个元素。

Comparable和Comparator接口是干什么的》列出他们的区别?
        java提供了只包含一个compareTo()方法的Comparable接口。这个方法可以给两个对象排序。具体来说,他返回负数,0,整数来表明输入对象小于,等于,>大于已经存在的对象。
        java提供了包含compare()和equals()方法的comparator接口。compare()方法用来给两个输入参数排序,返回负数,0,正数表明第一个参数是小于,等于,
大于第二个参数。equals()方法需要一个对象作为参数,他用来决定输入参数是否和comparator相等。只有当输入参数也是一个comparator并且输入参数和当前comparator的排序结果是相同的时候,这个方法才返回ture.

什么是java优先级队列?
        java优先级队列是一个基于优先级堆的无界队列,它的元素是按照自然顺序排序的

如何权衡使用有序数组还是无序数组?
        有序数组的好处是查找时间复杂度为O(log n),而无序数组是O(n)。有序数组的缺点是插入操作的时间复杂度为O(n),因此值大的元素需要往后移动给新来>的元素提供位置。相反,无序数组的插入时间复杂度为常量O(1)。

Enumeration接口和Iterator接口的区别有哪些?
        Enumeration速度是Iterator的2倍,同时占用更少的内存。但是,Iterator远远比Enumeration安全,因为其他线程不能修改正在被iterator遍历的集合里面
的对象。同时,Iterator允许调用者删除底层集合里面的元素,而Enumeration不可能。

HashSet和TreeSet有什么区别?
        HashSet是由一个hash表来实现的,因此它的元素是无序的。add(),remove(),contains()方法的时间复杂度为O(1).
        另一方面,TreeSet是由一个树形的结构来实现的,它的里面的元素是有序的。因此,add(),remove(),contains()方法的时间复杂度为O(log n)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值