请选择 进入手机版 | 继续访问电脑版

热点推荐

查看: 88|回复: 1

Java三大集合

[复制链接]
  • TA的每日心情
    开心
    昨天 09:36
  • 签到天数: 256 天

    [LV.8]以坛为家I

    2万

    主题

    2万

    帖子

    8万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    85090
    发表于 2020-6-2 22:49:08 | 显示全部楼层 |阅读模式
    一、三大集合有哪些

    Map、Set、List,其中Set、List是Collection的子类。
    二、Java中常见的集合

    1、Map和Collection是所有集合接口的父类接口;
    2、Collection包括Set与List集合;
    3、Map集合有:HashMap,TreeMap,HashTable,currentHashMap;
    4、Set集合有:HashSet,TreeSet,LinkedHashSet;
    5、List集合有:ArrayList,LinkedList,vector
    三、HashMap和HashTable区别

    1、HashMap是线程不安全的;HashTable是线程安全的,使用了锁;
    2、HashMap的key、value都可以为null,而HashTable不可以;
    四、HashMap为什么说是线程不安全的

    1、HashMap线程不安全主要是考虑到了多线程环境下进行扩容可能会出现HashMap死循环;
    2、HashTable是在给put、remove方法中加入了synchronized锁,由此我们也能看出,在多线程操作HashTable中的一个方法时,线程是安全的;但是当线程同时调用两个方法,则就是不安全的;
    五、HashMap的存储原理

    当调用put()方法,首先会调hashCode()方法,返回一个HashCode值,然后通过hashcode找到hashcode桶,将Entry实例存入桶中;当发生hash冲突,则会在桶后面添加链表。hashMap在1.8前的结构是数组+链表的形式,在1.8后为数组+链表+红黑树,为什么会是这样呢,因为在hashmap容量太大的情况下,检索起来会很慢,因此在1.8后加入了红黑树,提高教唆效率。
    六、ConcurrentHashMap和Hashtable的区别

    1、ConcurrentHashMap:当对Map进行多线程操作时,只会锁上操作的buket;但是Hashtable在每次同步执行时都要锁住整个结构。
    七、ArrayList和LinkedList有哪些区别

    1、ArrayList底层使用了动态数组实现,实际上就是一个动态数组;
    2、LinkedList底层通过链表实现;
    3、ArrayList在随机存储上效率更高;
    4、LinkedList在增删上效率更高;
    5、ArrayList需要预留一些空间;
    6、LinkedList的开销是必须存储节点的信息以及节点的指针信息;
    八、HashSet和TreeSet有哪些区别

    1、HashSet:底层通过hash算法来实现,保证了元素的唯一性;
    2、TreeSet底层以红黑树来实现;保证元素唯一性是通过Comparable或者Comparator接口实现;
    九、List和Set的区别

    1、List是有序,可重复的链表;
    2、Set是无序,且不可重复的链表;
    有无序,指的是存入和取出顺序是否相同;
    十、Collection和Collections有什么区别

    1、collection是集合的一个顶层接口,包含了集合体系的共性;
    2、collections是一个工具类,用于操作collection的方法;

    Java吧 收集整理 java论坛 www.java8.com
    回复

    使用道具 举报

    该用户从未签到

    5

    主题

    45

    帖子

    95

    积分

    注册会员

    Rank: 2

    积分
    95
    发表于 3 天前 | 显示全部楼层
    佩服佩服!
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    快速回复 返回顶部 返回列表