文章目录

  • java的链表(LinkedList)
    • LinkedList类的增删改查
      • LinkList类的增加(add、addFirst、addLast)
      • LinkedList类的删除(removeFirst、removeLast)
      • ArrayList类的查找(getFirst、getLast、迭代查询)
    • LinkedList的常用方法
    • 对ArrayList和LinkedList的选择

java的链表(LinkedList)

Java的LinkedList(链表) 类似于 ArrayList,是一种常用的数据容器。
与 ArrayList 相比,LinkedList 的增加和删除对操作效率更高,而查找和修改的操作效率较低。
引用:

import java.util.LinkedList;

初始化:

LinkedList<E> list = new LinkedList<E>();   // 普通创建方法
//或者
LinkedList<E> list = new LinkedList(Collection<? extends E> c); // 使用集合创建链表

LinkedList类的增删改查

LinkList类的增加(add、addFirst、addLast)

// 引入 LinkedList 类
import java.util.LinkedList;public class LinkedListTest {public static void main(String[] args) {LinkedList<String> animals = new LinkedList<String>();//普通添加animals.add("cow");animals.add("tiger");animals.add("rabbit");System.out.println("使用add添加动物后:"+animals);// 使用 addFirst() 在头部添加元素animals.addFirst("mouse");System.out.println("使用addFirst添加动物后"+animals);animals.addLast("dragon");System.out.println("使用addLast添加动物后"+animals);}
}

运行结果如下:

LinkedList类的删除(removeFirst、removeLast)

import java.util.LinkedList;public class LinkedListTest {public static void main(String[] args) {LinkedList<String> animals = new LinkedList<String>();//普通添加animals.add("cow");animals.add("tiger");animals.add("rabbit");System.out.println("使用add添加动物后:"+animals);// 使用 addFirst() 在头部添加元素animals.addFirst("mouse");System.out.println("使用addFirst添加动物后"+animals);animals.addLast("dragon");System.out.println("使用addLast添加动物后"+animals);//删除animals.removeFirst();System.out.println("使用removeFirst删除动物后"+animals);animals.removeLast();System.out.println("使用removeLast删除动物后"+animals);}
}

执行结果如下:

ArrayList类的查找(getFirst、getLast、迭代查询)

import java.util.LinkedList;public class LinkedListTest {public static void main(String[] args) {LinkedList<String> animals = new LinkedList<String>();//普通添加animals.add("cow");animals.add("tiger");animals.add("rabbit");System.out.println("使用add添加动物后:"+animals);// 使用 addFirst() 在头部添加元素animals.addFirst("mouse");System.out.println("使用addFirst添加动物后"+animals);animals.addLast("dragon");System.out.println("使用addLast添加动物后"+animals);animals.removeFirst();//删除System.out.println("使用removeFirst删除动物后"+animals);animals.removeLast();System.out.println("使用removeLast删除动物后"+animals);//查找System.out.println("使用getFirst获取到的动物是:"+animals.getFirst());System.out.println("使用getLast获取到的动物是:"+animals.getLast());}
}

执行结果:

或者我们使用迭代的方法,查询链表的所有信息,代码如下:

import java.util.LinkedList;public class LinkedListTest {public static void main(String[] args) {LinkedList<String> animals = new LinkedList<String>();//普通添加animals.add("cow");animals.add("tiger");animals.add("rabbit");System.out.println("使用add添加动物后:"+animals);// 使用 addFirst() 在头部添加元素animals.addFirst("mouse");System.out.println("使用addFirst添加动物后"+animals);animals.addLast("dragon");System.out.println("使用addLast添加动物后"+animals);animals.removeFirst();//删除System.out.println("使用removeFirst删除动物后"+animals);animals.removeLast();System.out.println("使用removeLast删除动物后"+animals);//查找System.out.print("使用迭代获取到的动物是:");for(int i = 0; i < animals.size(); i++){System.out.print(animals.get(i)+" ");}
//        System.out.println("使用getFirst获取到的动物是:"+animals.getFirst());
//        System.out.println("使用getLast获取到的动物是:"+animals.getLast());}
}

执行结果如下:

或者用for-each的方式迭代也行,运行结果跟上面一样:

import java.util.LinkedList;public class LinkedListTest {public static void main(String[] args) {LinkedList<String> animals = new LinkedList<String>();//普通添加animals.add("cow");animals.add("tiger");animals.add("rabbit");System.out.println("使用add添加动物后:"+animals);// 使用 addFirst() 在头部添加元素animals.addFirst("mouse");System.out.println("使用addFirst添加动物后"+animals);animals.addLast("dragon");System.out.println("使用addLast添加动物后"+animals);animals.removeFirst();//删除System.out.println("使用removeFirst删除动物后"+animals);animals.removeLast();System.out.println("使用removeLast删除动物后"+animals);//查找System.out.print("使用迭代获取到的动物是:");for(String animal : animals){System.out.print(animal+" ");}
//        for(int i = 0; i < animals.size(); i++){//          System.out.print(animals.get(i)+" ");
//        }
//        System.out.println("使用getFirst获取到的动物是:"+animals.getFirst());
//        System.out.println("使用getLast获取到的动物是:"+animals.getLast());}
}

LinkedList的常用方法

图片来源于菜鸟教程


对ArrayList和LinkedList的选择

以下情况使用 ArrayList :

  • 频繁访问列表中的某一个元素。
  • 只需要在列表末尾进行添加和删除元素操作。

以下情况使用 LinkedList :

  • 你需要通过循环迭代来访问列表中的某些元素。
  • 需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。

java的链表(LinkedList类)相关推荐

  1. java集合框架LinkedList类的方法理解

    java提供的LinkedList类是双向列表,列表中的每个节点都包含了对前一个和后一个元素的引用. LinkedList与ArrayList一样实现List接口,只是ArrayList是List接口 ...

  2. Java中的LinkedList

    介绍: LinkedList是由节点组成的线性数据结构. 在单链列表中,每个节点包含数据和引用. 在此,参考部分引用链表中的下一个节点. 另一方面,在双链表中,我们具有指向上一个和下一个节点的数据和引 ...

  3. JDK1.8源码(六)——java.util.LinkedList 类

    上一篇博客我们介绍了List集合的一种典型实现 ArrayList,我们知道 ArrayList 是由数组构成的,本篇博客我们介绍 List 集合的另一种典型实现 LinkedList,这是一个由链表 ...

  4. java链表的数据结构_Java数据结构 获取链表(LinkedList)的第一个和最后一个元素

    Java数据结构 获取链表(LinkedList)的第一个和最后一个元素 以下实例演示了如何使用 LinkedList 类的 linkedlistname.getFirst() 和 linkedlis ...

  5. 14 Java集合(集合框架+泛型+ArrayList类+LinkedList类+Vector类+HashSet类等)

    本篇主要是集合框架基础和List集合,Map集合等等后续更 集合 14.1 集合框架 14.1.1 概念 14.1.2 集合架构 14.2 Collection接口 14.2.1 常用方法 14.3 ...

  6. java中的LinkedList(链表)与ArrayList(动态数组):(1)简单辨析

    一.数组的缺点(为什么需要引入JAVA集合): 数组不是面向对象的,存在明显的缺陷,集合弥补了数组的缺点,比数组更灵活更实用,而且不同的集合框架类可适用不同场合. 首先数组可以存放基本数据类型和对象, ...

  7. Java链表—— LinkedList

    ArrayList 相比,LinkedList 的增加和删除的操作效率更高,而查找和修改的操作效率较低. 链表LinkedList和动态数组ArrayList 以下情况使用 ArrayList : 频 ...

  8. java中LinkedList类的操作

    LinkedList类是双向链表,单向队列,双向队列,栈的实现类: LinkedList类实现单向队列和双向队列的接口,自身提高了栈操作的方法,链表操作的方法. 在LinkedList类中存在很多方法 ...

  9. Java基础篇之LinkedList类

    LinkedList类扩展AbstractSequentialList并执行List接口.它提供了一个链接列表数据结构.它具有如下的两个构造函数,说明如下: LinkedList( ) LinkedL ...

  10. JAVA(四)类集/枚举

    成鹏致远 | lcw.cnblog.com |2014-02-04 JAVA类集 1.认识类集 类集的作用 类集实际上就是一个动态的对象数组,与一般的对象数组不同,类集中的对象内容可以任意扩充 类集的 ...

最新文章

  1. eplan怎么插入表格_EPLAN电气图实例控制柜(控制面板)
  2. 临河智慧城管:让城市更和谐
  3. vim 打开中文乱码
  4. 信息安全系统设计基础第九周总结
  5. 串口通信模块4:串口操作自定义类(1)
  6. 【Vegas原创】终端服务器超出了最大允许连接数 解决方法
  7. edge浏览器设置默认浏览器
  8. 开启进度比的文本为什么没有显示_没有开通智钻,为什么会显示流量是在智钻进店的呢?...
  9. ManualResetEvent使用说明
  10. C++ gbk与utf8互转
  11. 为什么员工 996 多猝死,而企业家 996 甚至 9127 却很少听到有猝死的?答案原来是.....
  12. 网络安全——WEP实现无线局域网安全
  13. 苹果iphone手机哪些机型支持刷公交卡
  14. 无法使用以下不同的参数继承com.baomidou.mybatisplus.extension.service.IService: <> 和 <com.itheima.rijidao.en
  15. Python同步学习(一)
  16. 总结十二:管理经验法则和名言
  17. 人民日报评直播问答:百舸争流背后同质化弊病已显现
  18. MySQL事务的四种隔离界别以及会造成的问题和解决办法
  19. ScalaNote24-模式匹配和高阶函数练习题
  20. Win7如何禁用安全模式 如何禁止进入安全模式?

热门文章

  1. WINDOWS2003五种备份模式详解
  2. 【收益管理】单资源容量控制(2)先从报童模型谈起!
  3. java itext read a pdf file_java - 使用iText7读取PDF时遇到的问题(使用iText5) - 堆栈内存溢出...
  4. matlab正反馈系统根轨迹,正反馈回路和非最小相位系统根轨迹
  5. flv 文件格式详解
  6. Oracle怎样导出应收开票,【Oracle|Oracle财务系统应收账款模块操作手册】
  7. 苹果6严重卡顿_苹果手机变慢变卡,怎么破?
  8. 一文掌握Java基础知识点(思维导图)
  9. 10w单词库(含释义)(包含sql,csv)
  10. 为啥春节抢红包总不是运气王?看完微信抢红包算法你就明白了