LinkedList学习


Java LinkedList学习:

  • LinkedList定义:

    • 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是再每一个节点里存到下一个节点的地址;

    • 链表可分为单向链表和双向链表;

    • 单向链表包含2个值:当前节点的值和一个指向下一节点的连接;

    • 双向链表有3个值:数值,向后的节点连接,向前的节点连接;

    • LinkedList:增加和删除的操作效率高,而查找和修改的操作效率低

       

  • 以下情况使用ArrayList:

    • 频繁访问列表中的某一个元素;

    • 只需要在列表末尾进行添加和删除元素;

  • 以下情况使用LinkedList:

    • 需要通过循环迭代来访问列表中的某些元素;

    • 需要频繁的在列表开头,中间,末尾等位置进行添加和删除元素操作;

 

  • LinkedList语法:

    ?
    LinkedList<E> list=new LinkedList<E>();//普通创建方法
    ?
    //创建一个链表实例
    public class ListDemo04 {
       public static void main(String[] args) {
    ?
           LinkedList<String> list=new LinkedList<>();
           list.add("Google");
           list.add("baidu");
           list.add("haha");
    ?
           System.out.println(list);//[Google, baidu, haha]
    ?
      }
    }
    ?

     

  • LinkedList的常用方法:

    • 在列表头部插入元素:addFirst( );

      • 代码案例:

        public class ListDemo04 {
           public static void main(String[] args) {
        ?
               LinkedList<String> list=new LinkedList<>();
               list.add("Google");
               list.add("baidu");
               list.add("haha");
        ?
               list.addFirst("First");//直接插入元素值
        ?
               System.out.println(list);//[First, Google, baidu, haha]
        ?
          }
        }
        ?

         

    • 在列表头部移除元素:removeFirst( );

      • 代码案例:

        public class ListDemo04 {
           public static void main(String[] args) {
        ?
               LinkedList<String> list=new LinkedList<>();
               list.add("Google");
               list.add("baidu");
               list.add("haha");
        ?
               list.removeFirst();//无参数,直接移除
        ?
               System.out.println(list);//[baidu, haha]
        ?
          }
        }
        ?

         

    • 在列表表结尾插入元素:addLast( );

      • 代码案例:

        public class ListDemo04 {
           public static void main(String[] args) {
        ?
               LinkedList<String> list=new LinkedList<>();
               list.add("Google");
               list.add("baidu");
               list.add("haha");
        ?
               list.addLast("First");//直接插入元素值
        ?
               System.out.println(list);//[Google, baidu, haha, First]
        ?
          }
        }
        ?

         

    • 在列表表结尾删除元素:removeLast( );

      • 代码案例:

        public class ListDemo04 {
           public static void main(String[] args) {
        ?
               LinkedList<String> list=new LinkedList<>();
               list.add("Google");
               list.add("baidu");
               list.add("haha");
        ?
               list.removeLast();//无参数,直接移除
        ?
               System.out.println(list);//[Google, baidu]
        ?
          }
        }
        ?

         

    • 获取列表第一个元素:getFirst( );

      • 代码案例:

        public class ListDemo04 {
           public static void main(String[] args) {
        ?
               LinkedList<String> list=new LinkedList<>();
               list.add("Google");
               list.add("baidu");
               list.add("haha");
        ?
        ?
               System.out.println(list.getFirst());//Google
        ?
          }
        }
        ?

         

      • 获取列表最后一个元素:getLast( );

        • 代码案例:

          public class ListDemo04 {
             public static void main(String[] args) {
          ?
                 LinkedList<String> list=new LinkedList<>();
                 list.add("Google");
                 list.add("baidu");
                 list.add("haha");
          ?
          ?
                 System.out.println(list.getLast());//haha
          ?
            }
          }