java linkedlist 使用

本文详细介绍了 Java 中 LinkedList 类如何实现栈和队列的基本操作,包括插入、删除、获取栈顶元素和队列头部元素,以及如何在列表排序时处理 null 值和并发安全问题。

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

linkedlist的使用过程主要要注意下面几点
1)linkedlis允许插入null节点
2)删除元素最后基于迭代器操作,可以保障并发安全
3)使用Collections.sort方法对list排序时,在没有比较器的情况下,元素必须非空且可排序,在有比较器的情况下,若比较器考虑了元素为空的情况,则null元素可参与排序
4)可以使用linkedlist实现stack和queue的功能

package com.basic.util;

import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;

public class BasicLinkedArrayList {
    public static void main(String[] args) {
        Stack<String> s = new Stack<String>();
        s.push("1");
        s.push("2");
        s.push("3");
        s.push(null);

        // 获取栈顶元素
        System.out.println(s.peek());

        queue<Integer> q = new queue<Integer>();
        q.offer(1);
        q.offer(2);
        q.offer(3);

        // 获取队列头元素
        System.out.println(q.peek());

        List<Integer> list = new LinkedList<Integer>();
        list.add(1);
        list.add(3);
        list.add(2);
        list.add(3);
        list.add(5);

        // 列表排序
        Collections.sort(list);


        // 基于iter删除元素,并发安全
        Iterator<Integer> iter = list.iterator();
        while (iter.hasNext()) {
            Integer i = iter.next();
            if (i.intValue() == 3) {
                iter.remove();
            }
        }
    }
}

class Stack<E> {
    private final LinkedList<E> contains = new LinkedList<E>();

    public boolean isEmpty() {
        return this.contains.isEmpty();
    }

    public void push(E e) {
        this.contains.addFirst(e);
    }

    public E pop() {
        return this.contains.pollFirst();
    }

    public E peek() {
        return this.contains.peekFirst();
    }
}

class queue<E> {
    private final LinkedList<E> contains = new LinkedList<E>();

    public void offer(E e) {
        this.contains.addFirst(e);
    }

    public E poll() {
        return this.contains.pollLast();
    }

    public E peek() {
        return this.contains.peekLast();
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值