美文网首页
java基础-2018-05-13

java基础-2018-05-13

作者: 异常已捕获 | 来源:发表于2019-04-03 17:36 被阅读0次

    Hashcode的作用

    hashCode主要是用于数据的查询快捷性。

    两个对象的hashCode相同,但对象不一定相同;两个对象相同,其hashCode必然相同。

    HashMap的hashcode的作用

    用于确定对象在hashMap中存储的地址。

    为什么重载hashCode方法?

    重载equals方法时一定要重载hashCode方法。

    1、为什么需要重载equals方法。

    因为Object默认的equals方法是比较的两个对象的引用;意思就是指向同一内存,地址则相等,否则不相等;如果你现在需要利用对象里面的值来判断是否相等,则重载equal方法。

    2、为什么需要重载equals方法。

    因为需要满足equals相同,则hashCode必须相同;hashCode相同,equals不一定相同的约定。在HashTable、HashMap、HashSet等等hash结构的集合时,保证数据的唯一性。

    ArrayList、LinkedList、Vector的区别

    ArrayList内部实现是一个数组,非线程安全。插入时只能存储到数组尾部

    LinkedList的实现是一个双向链表,非线程安全。插入时,可以指定任意节点的前后位置。方法比ArrayList丰富。插入效率比ArrayList快。

    Vector实现和ArrayList类似,但是线程安全。

    String、StringBuffer与StringBuilder的区别

    String是字符串常量,一旦创建后对象就不可改变。StringBuffer和StringBuild是对象,可以改变。

    在对字符串进行操作时,如拼接时,StringBuffer和StringBuild处理效率优于String。StringBuffer是线程安全的,而StringBuild是非线程安全的。

    Map、Set、List、Queue、Stack的特点与用法

    Map是键值对的存储结构,键值key是唯一的,存储对象可以是一对一或N对1;

    Set不可以存储重复元素,可以存储null;只能用Iterator实现单项遍历,Set中没有同步方法;

    List比较常用的存储列表,有序集合。用Iterator实现单向遍历,也可用ListIterator实现双向遍历;

    Queue遵从先进先出原则。 不允许有Null对象。使用时尽量避免add()和remove()方法,而是使用offer()来添加元素,使用poll()来移除元素,它的优点是可以通过返回值来判断是否成功。;

    Stack遵从后进先出原则。 

    HashMap和HashTable的区别

    HashMap非线程安全,可以存储null对象;

    HashTable线程安全,不可以存储null;

    JDK7与JDK8中HashMap的实现

    JDK7中HashMap的实现是散链列表,一个数组+链表。

    JDK8中则是数组+链表/红黑树的结构;当同一hashcode对象超过8个时,其所在的链表则转化为红黑树结构。

    HashMap和ConcurrentHashMap的区别,HashMap的底层源码

    HashMap非线程安全,可以存储null;

    ConcurrentHashMap线程安全。

    ConcurrentHashMap能完全替代HashTable吗

    不能,两者的迭代器的一致性不同:HashTable使用的强一致性,而ConcurrentHashMap是弱一致性。比如ConcurrentHashMap中put一个数据,可能在一段时间内,get获取不到 。

    相关文章

      网友评论

          本文标题:java基础-2018-05-13

          本文链接:https://www.haomeiwen.com/subject/rhdrdftx.html