LinkedList

一、特征

1.底层实现是node节点,数据结构是双向链表,也可以作为队列(先进先出),栈(先进后出)

2.没有扩容概念

3.有序的、不唯一、可为null、有索引

4.查找较慢、插入删除较快

5.线程不同步的、多线程不安全的
如果要同步的LinkedList
List list = Collections.synchronizedList(new LinkedList(…));

二、常用方法

  • List接口的方法(索引的操作)

add() \ get() \ remove() \ set()
size() \ clear() \ contains() \ isEmpty()
indexOf() \ lastIndexOf()

  • Deque接口的方法(首尾元素的操作)

addFirst(E e) 将指定元素插入此列表的开头
addLast() 将指定元素插入到此列表的结尾
getFirst() 返回此列表的第一个元素
getLast() 返回此列表的最后一个元素
removeFirst() 移除并返回此列表的第一个元素
removeLast() 移除并返回此列表的最后一个元素

offer(E e) 将指定的元素添加到此列表的末尾(最后一个元素)
offerFirst(E e) 在此列表的开头插入指定的元素
offerLast(E e) 在此列表的结尾插入指定的元素
peek() 获取但不移除此列表的头(第一个元素)
peekFirst() 获取但不移除此列表的第一个元素;如果此列表为空,则返回null;
peekLast() 获取但不移除此列表的最后一个元素;如果此列表为空,则返回null;
poll() 获取并移除此列表的头(第一个元素)
pollFirst() 获取并移除此列表的第一个元素;如果此列表为空,则返回null;
pollLast() 获取并移除此列表的最后一个元素;如果此列表为空,则返回null;

push(E e) 将元素推入此列表所表示的堆栈
pop() 从此列表所表示的堆栈处弹出一个元素

三、测试代码

public class Demo01LinkedList {

    @Test
    public void test1(){
        LinkedList<String> list = new LinkedList<>();
        list.add("Tom");
        list.add("Han");
        list.addFirst("hello");
        list.addLast("world");
        System.out.println(list);
        String first = list.getFirst();
        String last = list.getLast();
        String remove = list.remove();
        System.out.println(first + "," + last + "," + remove);

    }

    @Test
    public void test2(){
        Deque<String> list = new LinkedList<>();
        list.add("java");
        list.add("python");
        list.addFirst("hello");
        list.add("world");
        System.out.println(list);

        System.out.println(list.getFirst());
        System.out.println(list.getLast());

        System.out.println(list.removeFirst());
        System.out.println(list);

    }

    @Test
    public void test03(){
        Deque<String> list = new LinkedList<>();
        list.add("java");
        list.add("hello");
        list.add("world");

        list.offer("python");
        list.offerFirst("kotlin");
        list.offerLast("golang");
        System.out.println(list);

        System.out.println(list.peek());// 获取不删除
        System.out.println(list.peekFirst());
        System.out.println(list.peekLast());
        System.out.println(list);

        System.out.println(list.poll()); // 获取并删除
        System.out.println(list);
    }

    @Test
    public void test04(){
        Deque<String> list = new LinkedList<>();
        list.push("hello");
        list.push("world");
        list.push("java");
        list.push("python");

        System.out.println(list);

        System.out.println(list.pop());

        System.out.println(list);

    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值