简单分析源码
链表的存储:在内存中不连续。
LinkedList的优缺点
优点
(1)提高了内存的使用率,碎片空间有效的利用。
(2)插入和删除比较快,只要移动地址指向。
缺点
遍历慢,不连续,没有偏移量,如:找第x元素,必须要从头开始检索
面试题:ArrayList和LinkedList区别?
- 两者都是List家族中的实现类
- ArrayList底层使用数组实现 -----优点 --缺点
- LinkedList底层采用链表,优点 缺点。。。。。
- 使用场景 如果数据量不大 优先选择ArrayList,如果数据量海量,且对检索速度有要求,建议使用ArrayList,如果数据量海量,且频繁对集合插入和删除,建议采用LinkedList。
LinkedList的使用方法
使用LinkedList,基本和ArrayList一样。
(把原来代码中的ArrayList()改成LinkedList()即可)
原理:接口具有多态性
数据结构:
数组
栈
需求:使用LinkedList实现栈的效果。
按照顺序输入一组数据到LinkedList中“a,b,c,d”
最终出栈的顺序”d,c,b,a”
设计MyStack类
添加数据 push
出栈 pop
当前栈中有多少元素
package com.njwbhz.March.week1.part0302;
import java.util.LinkedList;
/**
* @author FairyKunKun
* @since 2022/3/2
* @param <E>
*/
public class MyStack<E> {
private static LinkedList linkedList = new LinkedList();
private int size = 0;
public void push (E e) {
//
linkedList.push(e);
size = linkedList.size();
}
public void pop () {
System.out.println(linkedList.poll());
size = linkedList.size();
// linkedList.pop();
}
public int size() {
return this.size();
}
}
package com.njwbhz.March.week1.part0302;
public class TestMyStack {
public static void main(String[] args) {
MyStack myStack = new MyStack();
myStack.push("a");
myStack.push("b");
myStack.push("c");
myStack.push("d");
// System.out.println(myStack.size());
myStack.pop();
myStack.pop();
myStack.pop();
myStack.pop();
//由于输出的效果是不定的,所以我并没有把方法写成循环进而进行封装
}
}