实现类LinkedList
2:实现类LinkedList
基本的继承关系上,同ArrayList一样不是直接继承List接口,是一个实现类。
我们还是明确它的继承以及实现关系
public class LinkedList<E>extends AbstractSequentialList<E>implements List<E>, Deque<E>, Cloneable, Serializable
LinkedList的底层实现是链表,并且是双向链表。
与ArrayList相比,ArrayList的基本实现是数组,数组是便于进行查找的,而LinkedList的基本是实现双向链表是方便去进行增删改,但是不是很适合去随机查询。当然是和数组相比较。这个双向链表的顺序查找效率还是比较高的,因为是双向链表嘛!每个节点都有一个直接前驱和直接后继。前驱和后继可以认为是指针(C语言中的灵魂)。
<方法说明>
我们来看方法说明,其实很多方法还是和ArrayList的方法一样的。
add() addAll,clear(),clone(),contains(),get(),indexof(),lastIndexof(),remove(),set(),toArray()。基本上这几个方法都和ArrayList的方法使是一样的。
具体的看一些新的方法。我们分开说明
1:removeLastOccurrence(Object o)
从此列表中移除最后一次出现的指定元素(从头部到尾部遍历列表时)。
LinkedList link = new LinkedList<>();
link.add("jgdabc");
link.add("jink");
link.add("jgdabc");
System.out.println(link);
link.removeLastOccurrence("jgdabc");
System.out.println(link);
相应的一样道理
2:removeFirstOccurrence(Object o)
从此列表中移除第一次出现的指定元素(从头部到尾部遍历列表时)。
LinkedList link = new LinkedList<>();
link.add("jgdabc");
link.add("jink");
link.add("jgdabc");
System.out.println(link);
link.removeFirstOccurrence("jgdabc");
System.out.println(link);
3:removeLast()
移除并返回此列表的最后一个元素。改方法在移除的同时会返回移除的元素。
link.removeFirstOccurrence("jgdabc");
System.out.println(link);
String s_s = (String) link.removeLast();
System.out.println("移除元素后的集合:"+link);
System.out.println("被移除的元素:"+s_s);
同样,
4:removeFirst()
移除并返回此列表的第一个元素。不再举例
5:push(E e)
将元素推入此列表所表示的堆栈。此方法就是压栈的操作。
该方法的效果等同于addFirst()
对应还有
6:pop(E e)
出栈,此方法等效于removeFirst()
link.push("jgdabc");
System.out.println(link);
link.pop();
System.out.println(link);
7:pollLast()
获取并移除此列表的最后一个元素;如果此列表为空,则返回 null
8:pollFirst()
获取并移除此列表的第一个元素;如果此列表为空,则返回 null。
9:poll()
获取并移除此列表的头(第一个元素)
String s_ = (String) link.pollLast();
System.out.println(s);
String s_1 = (String) link.pollFirst();
System.out.println(s_1);
String s_2 = (String) link.poll();
System.out.print(s_2);
10:peekLast()
获取但不移除此列表的最后一个元素;如果此列表为空,则返回 null。
11:peekFirst()
获取但不移除此列表的第一个元素;如果此列表为空,则返回 null。
12:peek()
获取但不移除此列表的头(第一个元素)。
String s_3 = (String) link.peekFirst();
System.out.println(s_3);
String s_4 = (String) link.peekLast();
System.out.println(s_4);
String s_5 = (String) link.peek();
System.out.println(s_5);
13:offerLast(E e)
在此列表末尾插入指定的元素。
14:offerFirst(E e)
在此列表的开头插入指定的元素。
15:offer(E e)
将指定元素添加到此列表的末尾(最后一个元素)。
boolean flag_f= link.offerFirst("jgdabc");
System.out.println(flag_f);
System.out.println(link);
boolean baby = link.offerLast("baby");
System.out.println(baby);
System.out.println(link);
boolean come_on = link.offer("come on");
System.out.println(come_on);
System.out.println(link);
14: Iterator<E> descendingIterator()
返回以逆向顺序在此双端队列的元素上进行迭代的迭代器。
具体的我们举个例子,看看这个逆向迭代器的使用,后面还会总结迭代方法
Iterator iterator = link.descendingIterator();
while(iterator.hasNext())
{
System.out.println(iterator.next());
}
vector已经废弃,不再叙述。至于为什么现在基本不用了,之后会写一篇专门详细介绍
- 点赞
- 收藏
- 关注作者
评论(0)