java中 List,Set,Map有什么具体区别?

2021-07-27 11:08:12 浏览数 (1)

List,Set,Map都是接口

List、Set是继承与Collection接口,Map是键值对组成的集合

List:有序可重复

ArraryList是List的其中一个实现类,我们常用的集合,底层是动态数组,它可以存储null值和任何类型的数据;他的初始化大小在源码中是private static final int DEFAULT_CAPACITY = 10;该集合是自动扩容;它是线程不安全的,支持随机访问

LinkList是List的其中一个实现类,底层是双向的链表,他不仅有ArraryList的基本操作还有get,remove,insert方法;但是他不能随机访问,所以查询的速度比ArraryList慢,因为他的底层是链表,所以在增删方面的速度远远大于ArraryList

Vector是List的其中一个实现类,跟ArraryList差不多,ArraryList有的操作他都有,底层是动态数组,但是他是同步的,意思就是他是线程安全的

Set:无序不重复

HashSet可以说是在查询方面速度是最快的集合,他的内部原理是HashCode,允许存储有且只有一个null值,元素的顺序是由哈希码来决定,不保证迭代顺序

TreeSet的内部原理是采用二叉树,不允许存储null值,元素的自然顺序排序

Map:保证元素的一对一关系

HashMap内部是以哈希表的数据结构实现,该集合是为了快速查询设计的,内部有一个hash数组,允许存储null值;该集合是线程不安全的

HashTable的实现原理和HashMap一样,不允许存储null值,是线程安全的集合

TreeMap的内部是一个有序的散列表,底层是我们比较恐怖的红黑树

个人理解,有错误请指出,一起改正

0 人点赞