目录
一、List和ArraysList
二、Queue和Deque
三、ArrayList和LinkList的区别与联系
四、其他相关知识
一、List和ArraysList
🍑List是一个接口,而ArrayList是List接口的一个实现类。
ArrayList类继承并实现了List接口。
📝因此,List接口不能被构造,也就是我们说的不能创建实例对象,但是我们可以像下面那样为List接口创建一个指向自己的对象引用,而ArrayList实现类的实例对象就在这充当了这个指向List接口的对象引用。
List
res = new ArrayList ();
🌰List a=new ArrayList();
📝则a拥有List的所有属性和方法,不会拥有其实现类ArrayList的独有的属性和方法。
a只能调用类ArrayList中重写List类的抽象方法
📝如果List与ArrayList中有相同的属性(如int i),有相同的方法(如void f()),
则a.i是调用了List中的i,成员变量不会被重写
a.f()是调用了ArrayList中的f();——因为list中的成员方法f()在ArraysList中进行了重写
二、Queue和Deque
🔔Queue和Deque是接口,在实例化时必须实例化LinkedList的对象,因为LinkedList实现了Queue接口
Queue
q = new LinkedList<>()
Deque
stack = new LinkedList ();
三、ArrayList和LinkList的区别与联系
List:是一个接口,规范了ArrayList 和 LinkedList中要实现的方法
ArrayList:实现了List接口,底层为动态类型顺序表
LinkedList:实现了List接口,底层为双向链表
1. ArrayList的实现是基于数组,LinkedList的实现是基于双向链表。
2. 对于随机访问,ArrayList优于LinkedList,ArrayList可以根据下标以O(1)时间复杂度对元素进行随机访问。而LinkedList的每一个元素都依靠地址指针和它后一个元素连接在一起,在这种情况下,查找某个元素的时间复杂度是O(n)
3. 对于插入和删除 *** 作,LinkedList优于ArrayList,因为当元素被添加到LinkedList任意位置的时候,不需要像ArrayList那样重新计算大小或者是更新索引。
4. LinkedList比ArrayList更占内存,因为LinkedList的节点除了存储数据,还存储了两个引用,一个指向前一个元素,一个指向后一个元素。
四、其他相关知识
📝上一张图总结一些
📝一些简单的解释和说明
- 1. Collection:是一个接口,包含了大部分容器常用的一些方法
- 2. List:是一个接口,规范了ArrayList 和 LinkedList中要实现的方法
- ArrayList:实现了List接口,底层为动态类型顺序表
- LinkedList:实现了List接口,底层为双向链表
- 3. Stack:底层是栈,栈是一种特殊的顺序表
- 4. Queue:底层是队列,队列是一种特殊的顺序表
- Deque:是一个接口
- 5. Set:集合,是一个接口,里面放置的是K模型
- HashSet:底层为哈希桶,查询的时间复杂度为O(1)
- TreeSet:底层为红黑树,查询的时间复杂度为O( ),关于key有序的
- 6. Map:映射,里面存储的是K-V模型的键值对
- HashMap:底层为哈希桶,查询时间复杂度为O(1)
- TreeMap:底层为红黑树,查询的时间复杂度为O( ),关于key有序
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)