0
点赞
收藏
分享

微信扫一扫

简谈LinkedList特有的方法

hwwjian 2022-01-20 阅读 72

一、什么是LinkedList集合

LinkedList:LinkedList类实现了List接口和Collection接口,是List接口的链接列表实现。允许所有元素(包括 null)。这些操作允许将链接列表用作堆栈、队列或双端队列。此类提供队列操作,以及其他堆栈和双端队列操作。所有操作都是按照双重链接列表的需要执行的。在列表中编索引的操作将从开头或结尾遍历列表(从靠近指定索引的一端)。
说明:(1)LinkedList说白了就是集合的链表实现,该链表是双重链表(有一个next指针和一个prev指针),在LinkedList中的方法可以实现堆栈、队列的操作
(2) 在LinkedList集合中不仅可以通过链表来顺序获取集合元素,而且可以通过索引获取集合元素。

二、LinkedList集合特有的方法

  1. void addFirst(E e) 将指定元素插入此列表的开头。
    void addLast(E e) 将指定元素添加到此列表的结尾。
 		LinkedList<Integer> linked=new LinkedList<>();
        linked.add(1);
        linked.add(2);
        System.out.println("linked: "+linked);
        linked.addFirst(3);
        System.out.println("使用addFirst方法添加元素后linked:"+linked);
        linked.addLast(4);
        System.out.println("使用addLast方法添加元素后linked:"+linked);

运行结果:
在这里插入图片描述

  1. (1) E element() 获取但不移除此列表的头元素。
    说明:这个方法是获取头元素与peek()方法有一样的结果,且等效于getFirst(),此方法与peek() 唯一的不同在于:如果此双端队列为空,它将抛出一个异常。
    (2) E getFirst() 返回此列表的第一个元素。
    说明:这个方法是获取头元素与peekFirst()方法有一样的结果,且等效于element(),此方法与 peekFirst() 唯一的不同在于:如果此双端队列为空,它将抛出一个异常。
    (3) E getLast() 返回此列表的最后一个元素。
    说明: 这个方法是获取尾元素与peekLast()方法有一样的结果,此方法与 peekLast() 唯一的不同在于:如果此双端队列为空,它将抛出一个异常。
  		LinkedList<Integer> linked=new LinkedList<>();
        linked.add(1);
        linked.add(2);
        linked.add(3);
        linked.add(4);
        System.out.println("linked: "+linked);
        Integer el = linked.element();
        System.out.println("element方法获取集合的头元素为:"+el);
        System.out.println("linked: "+linked);
        Integer fir = linked.getFirst();
        System.out.println("getFirst方法获取集合的头元素为:"+fir);
        Integer last = linked.getLast();
        System.out.println("getLast方法获取集合的尾元素为:"+last);

运行结果:
在这里插入图片描述
注意:E peek() 获取但不移除此列表的头(第一个元素)。E peekFirst() 获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。E peekLast() 获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。与对应的E element()、 E getFirst() 和 E getLast()方法运行效果一样,故不多赘述

  1. (1) E poll() 获取并移除此列表的头元素(第一个元素)
    说明:此方法会获取头元素并移除,等效于pollFirst方法,如果此列表为空,则返回 null。
    (2)E pollFirst() 获取并移除此列表的第一个元素;如果此列表为空,则返回 null。
    说明:此方法会获取头元素并移除,等效于poll方法,如果此列表为空,则返回 null。
    (3) E pollLast() 获取并移除此列表的最后一个元素;如果此列表为空,则返回 null。
    说明:此方法会获取尾元素并移除,如果此列表为空,则返回 null。
  		LinkedList<Integer> linked=new LinkedList<>();
        linked.add(1);
        linked.add(2);
        linked.add(3);
        linked.add(4);
        System.out.println("linked: "+linked);
        Integer el = linked.poll();
        System.out.println("poll方法获取集合的头元素为:"+el);
        System.out.println("linked: "+linked);
        Integer fir = linked.pollFirst();
        System.out.println("pollFirst方法获取集合的头元素为:"+fir);
        System.out.println("linked: "+linked);
        Integer last = linked.pollLast();
        System.out.println("pollLast方法获取集合的尾元素为:"+last);
        System.out.println("linked: "+linked);

运行结果:
在这里插入图片描述
注意:E remove() 移除并返回此列表的第一个元素。E removeFirst() 移除并返回此列表的第一个元素。E removeLast() 移除并返回此列表的最后一个元素。这些方法与 对应的poll 方法唯一不同在于:如果此双端队列为空,它将抛出一个异常。 这里不多赘述

  1. (1)int lastIndexOf(Object o) 返回此列表中最后出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
    (2) int indexOf(Object o)返回此列表中首次出现的指定元素的索引,如果此列表中不包含该元素,则返回 -1。
		LinkedList<Integer> linked=new LinkedList<>();
        linked.add(1);
        linked.add(2);
        linked.add(3);
        linked.add(1);
        System.out.println("linked: "+linked);
        int fir = linked.indexOf(1);
        System.out.println("linked集合中首次出现1的索引:"+fir);
        int las = linked.lastIndexOf(1);
        System.out.println("linked集合中最后出现1的索引:"+las);

运行结果:
在这里插入图片描述

  1. (1) boolean offer(E e) 将指定元素添加到此列表的末尾(最后一个元素)。
    说明:将指定元素插入此LinkedList集合的尾部;如果添加不违反容量限制的话,则添加成功,返回 true,如果当前没有可用的空间,则返回 false。当使用有容量限制的LinkedList集合时,此方法通常优于 add方法,后者可能无法插入元素,而只是抛出一个异常。此方法等效于 offerLast()。
    (2) boolean offerFirst(E e) 在此列表的开头插入指定的元素。
    说明:将指定元素插入此LinkedList集合的头部;如果添加不违反容量限制的话,则添加成功,返回 true,如果当前没有可用的空间,则返回 false。当使用有容量限制的LinkedList集合时,此方法通常优于 addFirst方法,后者可能无法插入元素,而只是抛出一个异常。
    (3) boolean offerLast(E e) 在此列表末尾插入指定的元素。
    说明:将指定元素插入此LinkedList集合的尾部;如果添加不违反容量限制的话,则添加成功,返回 true,如果当前没有可用的空间,则返回 false。 当使用有容量限制的LinkedList集合时,此方法通常优于 addLast方法,后者可能无法插入元素,而只是抛出一个异常。此方法等效于 offer()。
		LinkedList<Integer> linked=new LinkedList<>();
        linked.add(1);
        linked.add(2);
        System.out.println("linked: "+linked);
        linked.offer(3);
        System.out.println("使用offer方法后添加3元素后linked:"+linked);
        linked.offerLast(4);
        System.out.println("使用offerLast方法后添加4元素后linked: "+linked);
        linked.offerFirst(0);
        System.out.println("使用offerLast方法后添加0元素后linked: "+linked);

运行结果:
在这里插入图片描述

  1. (1) E pop() 从此列表所表示的堆栈处弹出一个元素。即返回并且移除这个元素
    (2)void push(E e) 将元素推入此列表所表示的堆栈
    注意:这两个方法只是依据堆栈的性质来使用的,也说明Linkedlis可以来模拟一个堆栈,并不是说明LinkedList就是堆栈实现。
    使用这两个方法时候,索引小的一端为堆栈的Top(顶部),压栈和出栈操作都是从此次开始。
		LinkedList<Integer> linked=new LinkedList<>();
        linked.add(1);
        linked.add(2);
        linked.add(3);
        System.out.println("linked: "+linked);
        Integer pop = linked.pop();
        System.out.println("使用pop方法获取元素为: "+pop);
        System.out.println("使用pop方法获取元素后linked: "+linked);
        linked.push(9);
        System.out.println("使用push方法添加元素后linked: "+linked);

运行结果:
在这里插入图片描述

  1. (1) boolean removeFirstOccurrence(Object o) 从此集合移除第一次出现的指定元素。如果不存在该元素则不做更改,移除失败返回false,如果存在移除成功则返回ture
    (2) boolean removeLastOccurrence(Object o) 从此集合中移除最后一次出现的指定元素(从头部到尾部遍历列表时)。如果不存在该元素则不做更改,移除失败返回false,如果存在移除成功则返回ture
		LinkedList<Integer> linked=new LinkedList<>();
        linked.add(2);
        linked.add(1);
        linked.add(3);
        linked.add(1);
        linked.add(4);
        linked.add(1);
        System.out.println("linked: "+linked);
        linked.removeFirstOccurrence(1);
        System.out.println("移除第一次出现1后的linked: "+linked);
        linked.removeLastOccurrence(1);
        System.out.println("移除最后一次出现1后的linked: "+linked);

运行结果:
在这里插入图片描述

  1. E set(int index, E element) 将此集合中指定位置的元素替换为指定的元素。索引位置必须在集合索引范围内,如果替换成功则返回被替换的元素,否则抛出异常。
 		LinkedList<Integer> list=new LinkedList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        System.out.println("list:"+list);
        Integer repalce = list.set(1, 6);
        System.out.println("被替换的元素是:"+repalce);
        System.out.println("使用set方法替换元素后list: "+list);

运行结果:
在这里插入图片描述

举报

相关推荐

0 条评论