ArrayList和LinkedList

2018-08-02  本文已影响0人  only_run

ArrayList是使用数组实现的,若要从数组中删除或插入某一个对象,需要移动后段的数组元素,从而会重新调整索引顺序,调整索引顺序会消耗一定的时间,所以速度上就会比LinkedList要慢许多.

相反,LinkedList是使用链表实现的,若要从链表中删除或插入某一个对象,只需要改变前后对象的引用即可!

private void init() {

//ArrayList以数组的方式来实现List接口的;

    ArrayList arrayList =new ArrayList();

//LinkedList是采用链表的方式来实现List接口的;增删快

    //  LinkedList适合用来实现Stack(堆栈)与Queue(队列),前者先进后出,后者是先进先出.

    LinkedList linkedList =new LinkedList<>();

}

//LinkedList 实现栈

public class StringStack {

private LinkedListlinkedList

            =new LinkedList();

/**

    * 将元素加入LinkedList容器

    * (即插入到链表的第一个位置)

*/

    public void push(String name) {

linkedList.addFirst(name);

}

/**

    * 取出堆栈中最上面的元素

    * (即取出链表linkedList的第一个元素)

*

    * @return

    */

    public String getTop() {

return linkedList.getFirst();

}

/**

    * 取出并删除最上面的元素

    * (即移出linkedList的第一个元素)

*

    * @return

    */

    public String pop() {

return linkedList.removeFirst();

}

/**

    * 获取元素个数

    *

    * @return

    */

    public int size() {

return linkedList.size();

}

/**

    * 判断堆栈是否为空

    * (即判断 linkedList是否为空)

*

    * @return

    */

    public boolean isEmpty() {

return linkedList.isEmpty();

}

//测试

    public void test() {

StringStack stack =new StringStack();

stack.push("张三");

stack.push("李四");

stack.push("秦时明月");

System.out.print("第一个元素是:\t");

System.out.println(stack.getTop());

System.out.println();

System.out.println("全部元素:");

while (!stack.isEmpty()) {

System.out.println("\t" + stack.pop());

}

}

}

//LinkedList 实现队列

//,由于LinkedList也实现了java.util.Queue接口,所以可以直接使用LinkedList的实例来实现.

public class StringQueue {

public void test() {

//父类引用queue指向子类对象

        Queue queue =new LinkedList();

//offer()方法是往队列加入元素

        queue.offer("李四");

queue.offer("张三");

queue.offer("秦时明月");

String element =null;

//poll() 方法是 返回队列头部元素并移除

        //peek() 方法是 返回队列头部元素 不移除

        while ((element = queue.poll()) !=null) {

System.out.println(element +"\t");

}

}

}

参考

上一篇下一篇

猜你喜欢

热点阅读