美文网首页
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