java基础知识

## java基础知识之——集合 ##

  1. list集合、set集合和Map集合作用以及常用实现类

    list、set、Map集合的作用,就是用于存储集合数据的,准确来说,list和set集合用来存储单列集合,Map用来存储双列集合数据的。

    list集合常用的实现类有:ArrayList、linkedList、Vector;

    他们的区别是:
        1、ArrayList底层是数组结构,查询快,增删慢(每次增删需要移动插入点后面一串的数据),是线程不安全的,效率高。
        2、Vector和ArrayList结构一样,区别就是,Vector是线程安全的,效率不高,是 JDK1.0的产物,已经被ArrayList取代。    
    

    set集合常用的实现类有:HashSet、TreeSet 、linkedHashSet;

    他们的区别是:
        1、HashSet底层是哈希表结构,由hashCode和equals方法保证元素唯一;
        2、TreeSet底层是二叉树结构,根据比较的返回值是否是0来决定;
        3、LinkedHashSet底层是由链表和哈希表组成,由链表保证有序,哈希表保证唯一。
    

    Map集合常用的实现类有:HashMap、TreeMap;

    他们的区别是:
        1、HashMap底层是哈希表结构,存储的结果是无序的;
        2、TreeMap底层是二叉树结构,可以对键值进行排序;
    
  2. 是否必须同时重写hashCode 和equal方法,为什么?

    是必须的,equal和hashcode的关系是如下的:

    1、equal方法比较的是两个对象的地址值,hashCode返回的是对象的地址值。
    2、如果两个对象相同,那么他们的HashCode值一定要相同,如果两个对象的HashCode值相同,他们不一定相同;
    3、比较两个对象的HashCode值,如果他们的HashCode值相同,再进行equa比较,如果hashCode值不相同,
          则这两个对象肯定不一样,  不必进行equal比较了。hashCode先进行比较是为了提高效率;
    
  3. HashMap的数据结构与hashtable,concurrentHashMap的区别

    1、HashMap是线程不同步的,因此存在线程安全问题,但是执行效率要高,
    2、hashTable是线程同步的,因此是线程安全的(使用synchronize关键字来同步),但是执行效率低一些,
       可以通过Iterator和  Enumeration进行数据遍历,不能接受null值。
    3、concurrentHashMap融合了上面两者的优点,提高效率的同时,线程是安全的(引入了分割(Segment));
    4、synchronize会锁定整个数据表,而segment只会锁定需要put操作的同一个segment元素部分。
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值