LinkedList入门教程
目录
- 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()方法来删除元素。该方法有两种用法:
- remove(int index): 删除指定index位置上的元素。
- 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进行降序排列。最后输出排序结果,可以看到结果是降序排列的。
常用方法
- add():在链表的末尾添加一个元素。
- addFirst(E element): 在链表的头部添加一个元素。
- addLast(E element): 在链表的尾部添加一个元素。
- add(int index, E element): 在指定的位置插入一个元素。
- removeFirst(): 移除链表的第一个元素。
- removeLast(): 移除链表的最后一个元素。
- remove(int index): 移除指定位置的元素。
- get(int index): 获取指定位置的元素。
- set(int index, E element): 将指定位置的元素替换为新元素。
- size(): 返回链表中元素的数量。
- clear(): 移除链表中所有的元素。
- indexOf():返回元素第一次出现的索引位置,如果没有则返回-1。
- isEmpty(): 判断链表是否为空。
- contains():判断链表中是否包含指定元素。
- peek(): 获取链表的头部元素,但不会移除它。
- poll(): 移除链表的头部元素,并返回该元素。
- offer(E element): 将元素添加到链表的末尾,相当于addLast方法。
- iterator(): 返回一个迭代器,可以用来遍历链表中的元素。
LinkedList入门教程相关推荐
- Redis入门教程(二)
推荐阅读: Redis入门教程(一)https://www.cnblogs.com/jichi/p/10285346.html 5. Redis 的数据结构 5.1 Redis 数据结构介绍 redi ...
- Clojure入门教程: Clojure – Functional Programming for the JVM中文版
http://xumingming.sinaapp.com/302/clojure-functional-programming-for-the-jvm-clojure-tutorial/ api:h ...
- Clojure入门教程
Clojure入门教程: Clojure – Functional Programming for the JVM中文版 发表于 2011 年 12 月 07 日 由 xumingming 作者: x ...
- Android基础入门教程——2.4.7 构建一个可复用的自定义BaseAdapter
Android基础入门教程--2.4.7 构建一个可复用的自定义BaseAdapter 标签(空格分隔): Android基础入门教程 本节引言: 如题,本节给大家带来的是构建一个可复用的自定义Bas ...
- Kafka入门教程与详解
1 Kafka入门教程 1.1 消息队列(Message Queue) Message Queue消息传送系统提供传送服务.消息传送依赖于大量支持组件,这些组件负责处理连接服务.消息的路由和传送.持久 ...
- 【CV】Pytorch一小时入门教程-代码详解
目录 一.关键部分代码分解 1.定义网络 2.损失函数(代价函数) 3.更新权值 二.训练完整的分类器 1.数据处理 2. 训练模型(代码详解) CPU训练 GPU训练 CPU版本与GPU版本代码区别 ...
- python tornado教程_Tornado 简单入门教程(零)——准备工作
前言: 这两天在学着用Python + Tornado +MongoDB来做Web开发(哈哈哈这个词好高端).学的过程中查阅了无数资料,也收获了一些经验,所以希望总结出一份简易入门教程供初学者参考.完 ...
- python向量计算库教程_NumPy库入门教程:基础知识总结
原标题:NumPy库入门教程:基础知识总结 视学算法 | 作者 知乎专栏 | 来源 numpy可以说是 Python运用于人工智能和科学计算的一个重要基础,近段时间恰好学习了numpy,pandas, ...
- mysql query browswer_MySQL数据库新特性之存储过程入门教程
MySQL数据库新特性之存储过程入门教程 在MySQL 5中,终于引入了存储过程这一新特性,这将大大增强MYSQL的数据库处理能力.在本文中将指导读者快速掌握MySQL 5的存储过程的基本知识,带领用 ...
最新文章
- 常见Android Native崩溃及错误原因
- Python常见问题(6):Python在Windows上的问题 Python on Windows FAQ
- Python基础教程:xrange和range的使用区别
- mysql insert 锁
- 页面性能优化参考建议
- Linux下MySQL忘记root密码及解决办法
- 取证 c语言实现日志导出_日志与日志不一样:五种不能忽略的日志源
- 迭代器 java_Java设计模式8:迭代器模式
- 应用zip压缩的javascript以及Egret H5游戏实战
- Linux学习笔记---初次编译Uboot系统
- github 分支 合并
- c语言文本格式自动对齐,c语言文件读取原始数据是1、2列是按相同的一起排列命名为Yi- 爱问知识人...
- java.lang.ClassNotFoundException: com.mysql.jdbc.Driver,网页一直处于加载中,servlet+html+js+css项目难题解决
- CODESYS学习心得(持续更新)
- 浅谈PHP语言的优势和劣势
- IDEA - 官方定制主题,Dark Purple theme,Cyan Light Theme,Gray Theme
- 复旦大学高等代数学习指导书(白皮书)的评价
- 五种3DMAX使用版本区别比较(一)
- U盘数据不见了怎么恢复?
- 新媒体运营教程:策划一场成功漂亮的活动策划