美文网首页
Java三大集合

Java三大集合

作者: 老猫一枝花 | 来源:发表于2020-06-02 22:30 被阅读0次

    一、三大集合有哪些

    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三大集合

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