基础知识

1、数组和集合的区别?

     (1)数组存放的元素在定义数组时是固定的,如:type arrayName[] = new type[arraySize];

              集合可以通过add()、remove()方法添加、删除元素;

      (2)数组存放的数据类型是统一的;

               集合存放的数据类型可以不统一;           

2、集合类:List和Set比较,各自的子类比较?

         List和Set都继承自Collection接口

       (1)List:元素有放入顺序,元素可重复;

                1)ArrayList

                     优点:ArrayList是基于动态数组的数据结构,需要一块连续的存储空间,因为地址连续,一旦存储好了,查询操作效率会比较高;

                     缺点:因为地址连续,ArrayList要移动数据,所以增删慢;非同步,线程不安全;

                2)LinkdArrayList

                    优点:LinkdArrayList是基于链表的数据结构,地址是任意的,所以在开辟内存空间的时候不需要一块连续的地址,对于新增和删除操作比较占优势;

                      缺点:因为LinkArrayList需要移动指针,所以查询效率比较低;非同步,线程不安全;

                3)Vector

                      优点:基于动态数组实现,同步,线程安全;

                      缺点:由于线程的同步必然影响性能,所以ArrayList性能比Vector好;当Vector和ArrayList中元素超过初始元素大小时,Vector容量会翻倍,ArrayList只增加50%,有利于节约内存空间;

        

        (2)Set:无序,元素不许重复,重复元素会覆盖掉;

                1)HashSet

                     HashSet 是哈希表实现的,HashSet中的数据是无序的,可以放入null,但只能放入一个null,两者中的值都不能重复,就如数据库中唯一约束 。

                     HashSet要求放入的对象必须实现HashCode()方法,放入的对象,是以hashcode码作为标识的,而具有相同内容的String对象,hashcode是一样,所以放入的内容不能重复。但是同一个类的对象可以放入不同的实例。

                2)LinkedHashSet

                      HashSet的子类,存储的元素是有序的,是一个链表;

                3)TreeSet

                      TreeSet 是二叉树实现的,Treeset中的数据是自动排好序的,不允许放入null值 。

3、HashMap的底层实现?

     http://www.importnew.com/16301.html

     http://blog.csdn.net/tuke_tuke/article/details/51588156

4、ConcurrentHashMap的底层实现?

    

        

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值