我独立研究范德比尔特大学的CS251。我们的工作是为字符数组编写一个外观包装器,并使其具有可扩展性。但是,有一种方法 prune(),我不明白它应该做什么。你们能否说明这种方法的意义?既然,我不去那所学校,我不能问任何人。
这里是该Java代码的节点。
private class Node {
/**
* Value stored in the Node.
*/
// TODO - you fill in here
/**
* Reference to the next node in the list.
*/
// TODO - you fill in here
/**
* Default constructor (no op).
*/
Node() {
}
/**
* Construct a Node from a @a prev Node.
*/
Node(Node prev) {
// TODO - you fill in here
}
/**
* Construct a Node from a @a value and a @a prev Node.
*/
Node(char value, Node prev) {
// TODO - you fill in here
}
/**
* Ensure all subsequent nodes are properly deallocated.
*/
void prune() {
// TODO - you fill in here
// Leaving the list fully linked could *potentially* cause
// a pathological performance issue for the garbage
// collector.
}
答案 0 :(得分:1)
我提供的答案是简化的,但我希望从概念上解释你需要什么。在Java中,对象保留在堆上。当垃圾收集发生时,垃圾收集根不再直接或间接引用的对象将从堆中删除。
如果垃圾收集根仍然引用了对象,则不会对其进行垃圾回收。所有prune方法需要做的是将当前节点之后的每个节点的prev和next值设置为null。这将允许垃圾收集器从堆中删除这些对象。