目录

  • LinkedList是什么?
  • LinkedList的使用
    • 创建对象
    • 添加元素
    • 删除元素
    • 获取长度
    • 排序
  • 常用方法

LinkedList是什么?

LinkedList是一种数据结构,它由节点组成,每个节点包含一个值和一个指向下一个节点的指针。这种数据结构非常适合插入和删除操作,因为它们只涉及相邻节点的更改。LinkedList常用于实现栈、队列和线性列表等数据结构。在Java中,LinkedList是一个类,实现了List接口,可用于在链表中存储和操作对象。

LinkedList的使用

创建对象

使用LinkedList类的语法格式如下:

import java.util.LinkedList;LinkedList<String> list = new LinkedList<String>();

在上述代码中,我们首先通过 import 语句引入了 java.util 包中的 LinkedList 类。然后我们声明了一个名为 list 的 LinkedList 对象,这个对象可以存储字符串类型的数据。

如果需要存储其他类型的数据,只需要将 String 替换成相应的数据类型即可。例如,如果要存储整数类型的数据,代码如下:

LinkedList<Integer> list = new LinkedList<Integer>();

添加元素

下面是Java语言的示例代码,演示如何向LinkedList中添加元素

import java.util.LinkedList;public class Example {public static void main(String[] args) {LinkedList<String> linkedList = new LinkedList<>();// 添加元素linkedList.add("Java");linkedList.add("Python");linkedList.add("C++");// 输出LinkedList中所有元素System.out.println(linkedList);// 在指定位置添加元素linkedList.add(1, "Ruby");// 输出LinkedList中所有元素System.out.println(linkedList);}
}

在上面的代码示例中,首先创建了一个空的LinkedList对象,然后通过调用add()方法,向其添加了三个元素。接着调用 System.out.println(linkedList);语句,输出LinkedList中所有元素,结果为:

[Java, Python, C++]

接着调用linkedList.add(1, “Ruby”);,在LinkedList的第二个位置(索引值为1)添加了一个新的元素"Ruby"。最后再次调用System.out.println(linkedList);输出新的LinkedList中所有元素,结果为:

[Java, Ruby, Python, C++]

删除元素

可以使用LinkedList类中的remove()方法来删除元素。该方法有两种用法:

  1. remove(int index): 删除指定index位置上的元素。
  2. remove(Object obj): 删除第一个找到的obj对象。

示例代码:

import java.util.LinkedList;public class Main {public static void main(String[] args) {LinkedList<String> list = new LinkedList<>();list.add("apple");list.add("banana");list.add("orange");System.out.println(list);// remove the element at index 1list.remove(1);System.out.println(list);// remove the first occurrence of "orange"list.remove("orange");System.out.println(list);}
}

输出:

[apple, banana, orange]
[apple, orange]
[apple]

注意:当使用remove(int index)方法时,如果给定的index超出了链表的范围,将会抛出IndexOutOfBoundsException异常。

获取长度

可以通过LinkedList的size()方法获取LinkedList的长度,如下所示:

LinkedList list = new LinkedList();
int length = list.size();

以上代码将创建一个空的LinkedList,然后使用size()方法获取该LinkedList的长度,将其存储在一个整数变量length中。

如果LinkedList已经包含一些元素,则可以直接使用size()方法获取其长度。例如:

LinkedList list = new LinkedList();
list.add("A");
list.add("B");
list.add("C");
int length = list.size();

以上代码将创建一个LinkedList,向其中添加三个字符串元素,然后使用size()方法获取该LinkedList的长度,将其存储在一个整数变量length中。

排序

Java LinkedList排序的代码示例:

import java.util.Collections;
import java.util.LinkedList;public class Main {public static void main(String[] args) {LinkedList<Integer> list = new LinkedList<>();list.add(4);list.add(2);list.add(8);list.add(5);Collections.sort(list); // 对LinkedList进行排序System.out.println(list); // 输出排序结果 [2, 4, 5, 8]}
}

在上述示例中,我们首先创建了一个LinkedList,并向其添加了一些Integer类型的元素。然后,我们调用Collections.sort()方法对该LinkedList进行排序,最后输出排序结果。可以看到,排序结果是升序排列的。

如果要对LinkedList进行降序排列,则可以使用Collections.reverseOrder()方法,如下所示:

import java.util.Collections;
import java.util.LinkedList;public class Main {public static void main(String[] args) {LinkedList<Integer> list = new LinkedList<>();list.add(4);list.add(2);list.add(8);list.add(5);Collections.sort(list, Collections.reverseOrder()); // 对LinkedList进行降序排序System.out.println(list); // 输出排序结果 [8, 5, 4, 2]}
}

在这个示例中,我们将Collections.sort()方法的第二个参数设置为Collections.reverseOrder(),以对LinkedList进行降序排列。最后输出排序结果,可以看到结果是降序排列的。

常用方法

  1. add():在链表的末尾添加一个元素。
  2. addFirst(E element): 在链表的头部添加一个元素。
  3. addLast(E element): 在链表的尾部添加一个元素。
  4. add(int index, E element): 在指定的位置插入一个元素。
  5. removeFirst(): 移除链表的第一个元素。
  6. removeLast(): 移除链表的最后一个元素。
  7. remove(int index): 移除指定位置的元素。
  8. get(int index): 获取指定位置的元素。
  9. set(int index, E element): 将指定位置的元素替换为新元素。
  10. size(): 返回链表中元素的数量
  11. clear(): 移除链表中所有的元素
  12. indexOf():返回元素第一次出现的索引位置,如果没有则返回-1。
  13. isEmpty(): 判断链表是否为空。
  14. contains():判断链表中是否包含指定元素。
  15. peek(): 获取链表的头部元素,但不会移除它。
  16. poll(): 移除链表的头部元素,并返回该元素。
  17. offer(E element): 将元素添加到链表的末尾,相当于addLast方法。
  18. iterator(): 返回一个迭代器,可以用来遍历链表中的元素。

LinkedList入门教程相关推荐

  1. Redis入门教程(二)

    推荐阅读: Redis入门教程(一)https://www.cnblogs.com/jichi/p/10285346.html 5. Redis 的数据结构 5.1 Redis 数据结构介绍 redi ...

  2. Clojure入门教程: Clojure – Functional Programming for the JVM中文版

    http://xumingming.sinaapp.com/302/clojure-functional-programming-for-the-jvm-clojure-tutorial/ api:h ...

  3. Clojure入门教程

    Clojure入门教程: Clojure – Functional Programming for the JVM中文版 发表于 2011 年 12 月 07 日 由 xumingming 作者: x ...

  4. Android基础入门教程——2.4.7 构建一个可复用的自定义BaseAdapter

    Android基础入门教程--2.4.7 构建一个可复用的自定义BaseAdapter 标签(空格分隔): Android基础入门教程 本节引言: 如题,本节给大家带来的是构建一个可复用的自定义Bas ...

  5. Kafka入门教程与详解

    1 Kafka入门教程 1.1 消息队列(Message Queue) Message Queue消息传送系统提供传送服务.消息传送依赖于大量支持组件,这些组件负责处理连接服务.消息的路由和传送.持久 ...

  6. 【CV】Pytorch一小时入门教程-代码详解

    目录 一.关键部分代码分解 1.定义网络 2.损失函数(代价函数) 3.更新权值 二.训练完整的分类器 1.数据处理 2. 训练模型(代码详解) CPU训练 GPU训练 CPU版本与GPU版本代码区别 ...

  7. python tornado教程_Tornado 简单入门教程(零)——准备工作

    前言: 这两天在学着用Python + Tornado +MongoDB来做Web开发(哈哈哈这个词好高端).学的过程中查阅了无数资料,也收获了一些经验,所以希望总结出一份简易入门教程供初学者参考.完 ...

  8. python向量计算库教程_NumPy库入门教程:基础知识总结

    原标题:NumPy库入门教程:基础知识总结 视学算法 | 作者 知乎专栏 | 来源 numpy可以说是 Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas, ...

  9. mysql query browswer_MySQL数据库新特性之存储过程入门教程

    MySQL数据库新特性之存储过程入门教程 在MySQL 5中,终于引入了存储过程这一新特性,这将大大增强MYSQL的数据库处理能力.在本文中将指导读者快速掌握MySQL 5的存储过程的基本知识,带领用 ...

最新文章

  1. 常见Android Native崩溃及错误原因
  2. Python常见问题(6):Python在Windows上的问题 Python on Windows FAQ
  3. Python基础教程:xrange和range的使用区别
  4. mysql insert 锁
  5. 页面性能优化参考建议
  6. Linux下MySQL忘记root密码及解决办法
  7. 取证 c语言实现日志导出_日志与日志不一样:五种不能忽略的日志源
  8. 迭代器 java_Java设计模式8:迭代器模式
  9. 应用zip压缩的javascript以及Egret H5游戏实战
  10. Linux学习笔记---初次编译Uboot系统
  11. github 分支 合并
  12. c语言文本格式自动对齐,c语言文件读取原始数据是1、2列是按相同的一起排列命名为Yi- 爱问知识人...
  13. java.lang.ClassNotFoundException: com.mysql.jdbc.Driver,网页一直处于加载中,servlet+html+js+css项目难题解决
  14. CODESYS学习心得(持续更新)
  15. 浅谈PHP语言的优势和劣势
  16. IDEA - 官方定制主题,Dark Purple theme,Cyan Light Theme,Gray Theme
  17. 复旦大学高等代数学习指导书(白皮书)的评价
  18. 五种3DMAX使用版本区别比较(一)
  19. U盘数据不见了怎么恢复?
  20. 新媒体运营教程:策划一场成功漂亮的活动策划

热门文章

  1. OGRE的安装与配置
  2. 什么样的笔记本适合编程?
  3. 智能三子棋——保姆级教学。
  4. 人生在世究竟是为了什么
  5. 二进制转十进制 八进制 十六进制
  6. 关于《推背图》,《奇门遁甲》
  7. omnet++,veins,sumo使用多应用层实现车辆和行人的模拟
  8. 深度学习初学者推荐怎么在本地完成CS231n课程作业-配置环境
  9. c语言plc库,PLC编程-C语言.ppt
  10. 纽约市立大学布鲁克林学院计算机系,纽约市立大学布鲁克林学院教授张嘉如 带你体验《舌尖上的道德》...