课时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(); ………… } }
编译运行结果如下:
注:在清空链表之后,尝试调用 Get(0) 方法可能会导致空指针异常,因为 Root 已经为 Null 。
可以在 Get() 方法中添加对 Root 是否为 Null 的判断,如果是 Null ,则抛出一个自定义的异常,例如 EmptyListException 。或者也可以直接返回 Null。无论哪种方式,都需要在 Get() 方法的文档中明确说明这一点。
这些就是链表的基本功能,当然,这只是一个最简单最基础的单向链表实现。