简单介绍的单链表
java中多个集合的底层是基于数组实现,通过索引快速定位数据,并对数据进行删除等操作,但问题是,数组有自身的局限性,如果知道下标索引还好,但是不知道的话就要一个个遍历查找,然后再进行操作,删除一个数据,对于数组来说,根据索引定位到数据,删除这条数据,然后数据进行位置的移动,这个时间复杂度应该是2logN,尤其是重新调整位置使得性能开销较大,所以就需要链表来增删。
链表的分类有很多种,比如单链表,双端链表,双向链表,单向链表等,单链表是其他链表的基础,掌握了单链表实现其他的就好理解了。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* @author Mr.Zhang
* @version 1.0
* @program:sss
* @date 2021/5/8 16:49
*/
public class Node {
private Object data;//存储数据
private Node next;//下一节点
public Node(Object data,Node next) {
this.data = data;
this.next = next;
}
public static void main(String[] args) {
//头节点
Node head = new Node("这是头节点",null);
//下一个
head.next = new Node("这是头节点的下一节点",null);
//下一个的下一个
head.next.next = new Node("下一下一",null);
//替换头节点
head = new Node("替换的头节点", head);
}
}
链表的结构很简单,就是一个个节点连接在一起,形成一个完整的链条,每个节点包含2部分,数据域,和一个指向下一个节点引用的指针next,具体的更详细的大家可以参考相关资料解释,再说说删除操作,同样需要找到数据所在的位置,然后进行删除,不同的是,删除的时候,链表只需要改变一下前后节点的引用关系即可,就完成了节点的删除,而没有像数组那样触发一次全部数据的移动,从这个描述来看,链表在进行删除的时候,速度比数组快。