黑马程序员-Java之LinkedList

本文介绍如何利用Java中的LinkedList类来实现堆栈和队列数据结构,详细解释了LinkedList的特点以及特定方法的使用,通过代码实例展示了如何创建堆栈类和队列类,以及如何进行元素的添加、获取和判断是否为空的操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------------------------android培训、java培训、期待与您交流-----------------------


LinkedList实现了List|接口,是基于链表数据结构的List容器,所以它的特点是插入和删除操作效率高,缺点是查询操作效率低,因为要指针挨个移动去查找
特有的方法:
addFirst()//添加新元素到前一个元素的头部
addLast()//添加新元素到前一个元素的尾部
getFirst()//获取链表头元素,但不删除元素,如果集合中没元素,则报NoSuchElementException
getLast()获取链表尾元素,但不删除元素,如果集合中没元素,则报NoSuchElementException
removeFirst()//获取链表头元素,并删除该元素,如果集合中没元素,则报NoSuchElementException
removeLast()//获取链表尾元素,并删除该元素,如果集合中没元素,则报NoSuchElementException

JDK1.6出现了替代方法:(与前面的一一对应)
offerFirst();
offerLast();

peekFirst();
peekLast();

pollFirst();
pollLast();

应用:用LinkedList模拟堆栈和队列数据结构
代码:
package com.itheima;

import java.util.LinkedList;
// 堆栈类
class Stack{
    private LinkedList linked;
    public Stack(){
        linked = new LinkedList();
    }
    public void myAdd(Object o){
        linked.addLast(o);            
    }
    public Object myGet(){
        return linked.removeLast();        
    }
    public boolean isNull(){
        return linked.isEmpty();        
    }
}
//队列类
class Queue{
    private LinkedList linked;
    public Queue(){
        linked = new LinkedList();
    }
    public void myAdd(Object o){
        linked.addLast(o);            
    }
    public Object myGet(){
        return linked.removeFirst();        
    }
    public boolean isNull(){
        return linked.isEmpty();        
    }
}
public class LinkedListDemo {
    
    static void sopln(Object o){//对打印进行封装
        System.out.println(o);
    }

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        Stack stack = new Stack();//创建一个堆栈对象
        stack.myAdd("teacher01");//添加元素
        stack.myAdd("teacher02");
        stack.myAdd("teacher03");
        stack.myAdd("teacher04");
        while(!stack.isNull()){//循环取出该堆栈内的元素
            sopln(stack.myGet());
        }
        sopln("---------------");
        Queue queue = new Queue();//创建一个队列对象
        queue.myAdd("student01");//添加元素
        queue.myAdd("student02");
        queue.myAdd("student03");
        queue.myAdd("student04");
        while(!queue.isNull()){    //循环取出队列中的元素
            sopln(queue.myGet());
        }
        
    }

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值