java集合基础知识学习笔记

java集合基础知识学习笔记List 1 ArrayList Vector LinkedList 区别 ArrayList 和 Vector 底层实现基本相同 都是基于数组实现的 只是 Vector 的方法用修饰 所以 ArrayList 是线程不安全的 Vector 是线程安全的 LinkedList 底层基于双向链表实现 方法没有用修饰 线程不安全 2 数组和链表的区别 数组内存连续 随机访问效率高

大家好,我是讯享网,很高兴认识大家。



List

1.ArrayList Vector LinkedList区别

​ ArrayList和Vector底层实现基本相同,都是基于数组实现的,只是Vector的方法用修饰;所以ArrayList是线程不安全的,Vector是线程安全的。

​ LinkedList底层基于双向链表实现,方法没有用修饰,线程不安全。

2.数组和链表的区别

​ 数组内存连续,随机访问效率高,所以查询和修改效率高;链表内存不连续,增删方便,但是查询和修改效率低;数组和链表组合,就引出了HashSet。

3.HashSet

​ HashSet底层是HashMap,HashSet实际就是HashMap的KeySet; 结构是数组+单向链表或者是数组+红黑树;数据存入的过程:首先对要存入的元素取 hashCode,在利用hashCode和数组长度-1做按位与(&)操作,计算出下 标;如果数组上对应下标的位置没有元素,则存入,如果有元素,则取出元素,构建 链表,并将链表替换到数组对应下标中。如果数组长度和链表长度都到达临 界值,则链表进化为红黑树。

4.LinkedHashSet

​ LinkedHashSet底层是LinkedHashMap, LinkedHashSet实际就是LinkedHashMap的KeySet;结构是数组+双向链表,实现有序插入

5.HashMap和Hashtable的区别

​ Hashtable底层是数组+单向链表,HashMap底层是数组+单向链表+红黑树。HashMap线程不安全,Hashtable线程安全。HashMap键值允许为null, java集合基础知识学习笔记 Hashtable键值不允许为null。

6.Properties

​ Properties继承于Hashtable,操作类似。

7.TreeSet

​ 底层是TreeMap, 可以传入比较器,进行排序

8.TreeMap

​ 底层是红黑树,可以传入比较器,进行排序

小讯
上一篇 2024-12-30 11:55
下一篇 2024-12-26 08:28

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/142.html