当前位置:   article > 正文

Java中集合(四)之LinkedList类的概述和实现(Java中的双向链表)_linkedlist为什么用双向链表

linkedlist为什么用双向链表

1.LinkedList容器类

LinkedList 底层用双向链表实现的存储。特点:查询效率低,增删效率高,线程不安全。双向链表也叫双链表,是链表的一种,它的每个数据节点中都有两个指针,分别指向前一个节点和后一个节点。 所以,从双向链表中的任意一个节点开始,都可以很方便地找到所有节点。

1.1双向链表的介绍

  1. class Node<E> {
  2. E item;
  3. Node<E> next;
  4. Node<E> prev;
  5. }

 1.2LinkedList的使用(List标准)

LinkedList实现了List接口 ,所以LinkedList是具备List的存储特征的(有序、元素有重复)

  1. package LinkedList;
  2. /*
  3. *
  4. * 双向链表,List接口中定义的标准
  5. *
  6. * */
  7. import java.util.Arrays;
  8. import java.util.LinkedList;
  9. public class Test {
  10. public static void main(String[] args) {
  11. LinkedList<String> linkedList = new LinkedList<>();
  12. //增加元素
  13. linkedList.add("张三");
  14. linkedList.add("李四");
  15. linkedList.add("王五");
  16. linkedList.add("赵六");
  17. //获取元素
  18. for(String list: linkedList ){
  19. System.out.println(list);
  20. }
  21. // 删除元素,返回给flag删除元素的值
  22. String flag = linkedList.remove(0);
  23. System.out.println(flag);
  24. //转换为数组形式
  25. String[] strings = linkedList.toArray(new String[linkedList.size()]);
  26. // 输出数组·
  27. System.out.println(Arrays.toString(strings));
  28. }
  29. }

运行结果:

1.3LinkedList的使用(非List标准) 

  1. import java.util.Arrays;
  2. import java.util.LinkedList;
  3. public class Test02 {
  4. /*
  5. * 非List的使用
  6. * 它在实现List的时候也添加了自己的方法
  7. * 以双向链表存储内容
  8. * */
  9. public static void main(String[] args) {
  10. LinkedList<String> linkedList = new LinkedList<>();
  11. // 在链表的第一个位置进行插入元素
  12. linkedList.addFirst("a");
  13. linkedList.addFirst("b");
  14. linkedList.addFirst("c");
  15. // 为了让视觉鲜果更加明显。我们尽量使用数组形式进行输出
  16. String[] strings = linkedList.toArray(new String[linkedList.size()]);
  17. System.out.println(Arrays.toString(strings)); //输出内容为c、b、a
  18. // 得到第一个元素
  19. System.out.println(linkedList.get(0)); //输出c
  20. System.out.println(linkedList.get(1)); //输出b
  21. // 得到最后一个元素
  22. System.out.println(linkedList.getLast()); //输出a
  23. // 移除第一个元素
  24. linkedList.removeFirst();
  25. // 移除最后一个元素
  26. linkedList.removeLast();
  27. // 移除元素之后我们的List中就只剩下b了
  28. // 那我们读取栈顶元素
  29. System.out.println("读取到栈顶元素:"+linkedList.peek());
  30. // 再注入元素
  31. linkedList.push("注入");
  32. String[] str = linkedList.toArray(new String[linkedList.size()]);
  33. System.out.println(Arrays.toString(str));
  34. }
  35. }

 运行结果;

 本章因为涉及到数据结构内容中双向链表部分,以后还会继续扩展,请大家多多关注!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/935494
推荐阅读
相关标签
  

闽ICP备14008679号