课时142:链表(清空链表)

简介: 在某些场景下,我们需要一次性清空链表中的所有数据。这个时候就可以通过根元素处理进行控制。只要 Root 设置为空,则后续的节点都不存在。

课时142:链表(清空链表)


清空链表数据 (clean 方法)

 

在某些场景下,我们需要一次性清空链表中的所有数据。这个时候就可以通过根元素处理进行控制。只要 Root 设置为空,则后续的节点都不存在。

 

1.在 ILink 接口中添加 clean() 方法

Public void clean(); // 清空集合

 

2. 在 LinkImpl 类中实现 clean() 方法

public void clean() {
        this.root = null; // 将根节点设置为 null,后面所有节点都没有了
        this.count = 0;   // 将计数器设置为 0,个数清零
    }

 

3.测试

public class LinkDemo {
    public static void main(String[] args) {
        ILink<String> all = new LinkImpl<String>();
        System.out.println("【增加之前】数据个数:" + all.size()+"、是否为空集合:"+all.isEmpty());
        all.add("Hello");
        all.add("World");
        all.add("MLDN");
        all.add(1,"世界");
        all.clean();
      …………    }
}

编译运行结果如下:

image.png

注:在清空链表之后,尝试调用 Get(0) 方法可能会导致空指针异常,因为 Root 已经为 Null 。


可以在 Get() 方法中添加对 Root 是否为 Null  的判断,如果是 Null ,则抛出一个自定义的异常,例如  EmptyListException 。或者也可以直接返回 Null。无论哪种方式,都需要在 Get() 方法的文档中明确说明这一点。

 

这些就是链表的基本功能,当然,这只是一个最简单最基础的单向链表实现

相关文章
|
1月前
课时141:链表(数据删除)
1.数据删除的定义 2.在 ILink 接口里面追加新的删除方法 3.后续节点判断 4.完善 LinkImpl 子类中的 remove() 方法
|
1月前
|
存储
课时140:链表(判断数据是否存在)
在一个集合中往往会保存大量的数据,有时候会需要判断数据是否会存在。我们将使用对象比较的方式( Equals 方法)来实现这个功能。
|
1月前
|
索引
课时139:链表(修改指定索引数据)
现在已经可以通过索引来获取链表中的指定数据,既然可以获取数据,那么也就可以实现修改指定索引位置的数据这种常见功能。 本节将介绍如何实现这个功能。
|
1月前
|
存储 索引
课时133:链表实现简介
链表的本质是一种动态的对象数组,它可以存储任意数量的对象。简而言之,我们可以将其视为一种对象数组。 1. 链表简介 2. 链表的实现原理 3. 代码实现中的问题与解决方案
|
11月前
【移除链表元素】LeetCode第203题讲解
【移除链表元素】LeetCode第203题讲解
|
10月前
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
10月前
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表
|
10月前
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
87 2
|
11月前
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点.
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点
109 1
|
10月前
|
算法
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表
【经典LeetCode算法题目专栏分类】【第7期】快慢指针与链表