0
点赞
收藏
分享

微信扫一扫

【Java语言面向对象】(58)LinkedList

梅梅的时光 2022-03-11 阅读 74

简单分析源码

链表的存储:在内存中不连续。

LinkedList的优缺点

优点

   (1)提高了内存的使用率,碎片空间有效的利用。

(2)插入和删除比较快,只要移动地址指向。

缺点

遍历慢,不连续,没有偏移量,如:找第x元素,必须要从头开始检索

面试题:ArrayList和LinkedList区别?

  1. 两者都是List家族中的实现类
  2. ArrayList底层使用数组实现  -----优点  --缺点
  3. LinkedList底层采用链表,优点 缺点。。。。。
  4. 使用场景   如果数据量不大 优先选择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();
        //由于输出的效果是不定的,所以我并没有把方法写成循环进而进行封装


    }
}
举报

相关推荐

0 条评论