Java:从“链接列表”中删除所有元素

如何解决Java:从“链接列表”中删除所有元素

| 在Java中,如何在不使用现有的“ 0”方法的情况下删除链表中的所有元素?此练习的灵感来自电话采访中收到的一个问题。 说我可以用C做到这一点
void DeleteallElement( ListElement **head ) {  
    ListElement *deleteMe = *head;  
    while( deleteMe )  {  
        ListElement *next = deleteMe->next;  
        delete deleteMe;  
        deleteMe = next;  
    }  
    *head = NULL;  
}
谢谢     

解决方法

Java具有自动垃圾收集功能,因此您只需要将Head引用设置为null:
myList.headNode = null;
因此,假设我们有类ѭ3class,它也具有
resetList
函数...
public class LinkedList{
     private Node head;
     public Node find(Key k){ ... }
     public void add(Node n){ ... }
     ...
     public void reset(){ head = null;}
     public static void reset(LinkedList l){l.reset();}
}
如果我们不将“ 6”节点设为私有,则可以简单地执行我发布的第一个代码段。     ,如果您正在谈论
java.util.LinkedList
的实例:
    while (!linkedlist.isEmpty()) {
        linkedlist.removeFirst();
    }
如果您正在谈论任何“ 9”的实例:
    while (!list.isEmpty()) {
        list.remove(0);
    }
请记住,ѭ11是可选操作。但是,根据列表的实现,这可能会非常可怕。对于12英镑,这会更好:
    while (!list.isEmpty()) {
        list.remove(list.size() - 1);
    }
另一种选择是迭代列表并在每个元素上调用call14 ...这也是可选操作。 (但是再次,对于某些列表实现来说,这可能是非常低效的。) 如果您在谈论自定义链接列表类,那么答案取决于您声明列表类内部数据结构的方式。 我怀疑如果访问者提到了“ 0”方法,那么他们期望在标准Java收集框架(而不是自定义链接列表类)的上下文中得到答案。     ,读取实际代码很有用。我建议你看看。 对于单链列表,您可以将其用作@bdares,这建议您在查看java.util.LinkedList的实际代码(大多数开发人员使用的代码)时,答案就大不相同了。
public void clear() {
    Entry<E> e = header.next;
    while (e != header) {
        Entry<E> next = e.next;
        e.next = e.previous = null;
        e.element = null;
        e = next;
    }
    header.next = header.previous = header;
    size = 0;
    modCount++;
}
首先要注意的是这是用于向前和向后遍历的双链表,并且会积极清除所有引用。不确定为什么这样做会很愉快,因为GC会以任何方式清除它们,而
modCount
会拾取另一个线程中的所有更改。实际上,它实际上应该首先执行modCount。 为了进行比较,这是ArrayList.clear();。
public void clear() {
    modCount++;

    // Let gc do its work
    for (int i = 0; i < size; i++)
        elementData[i] = null;

    size = 0;
}
    ,
for(i=0;i<linkedlist.size;i++){
  linkedlist.removeFirst();
}
或者看这个例子。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?