1

java中有没有办法将对象重置为初始状态。但是,我正在演示搜索,当我到达一个节点时,将值更改为

current.visited = true;

那么现在的下一次搜索运行必须等于

current.visited = false;

这是可行的,除了不正确的逻辑。

所以理想情况下,构造代码看起来像:

        System.out.printf ("Breadth first search...\n\n");
    breadthFirstSearchMap (Romania);

 RESET Objects here...
    System.out.printf ("Depth first search...\n\n");
    depthFirstSearchMap (Romania);

 and again  here...

    System.out.printf ("Depth limited search...\n\n");      
     depthLimitedSearchMap (Romania); 
4

4 回答 4

1
public interface Resetable {

    public void reset();
}

class Foo implements Resetable {
   ...
}
于 2013-04-10T18:13:41.300 回答
0

我会使用我自己的reset()方法。做起来很简单。

于 2013-04-10T18:59:06.540 回答
0

您应该看看 memento 设计模式,尽管如果恕我直言,最简单的方法是将访问标志存储为您为每次搜索启动的已访问节点 id(在任何实现java.util.Set中包含操作成本 1 )。Set

否则,备忘录模式 Wiki 描述为:

“备忘录模式是一种软件设计模式,它提供了将对象恢复到其先前状态的能力”

于 2013-04-10T18:55:43.227 回答
0
ClassObject depthFirstSearchMap;
public void blabla(){
depthFirstSearchMap = new ClassObject(Romaina);
 System.out.printf ("Breadth first search...\n\n");
breadthFirstSearchMap (Romania);
depthFirstSearchMap = new ClassObject(Romaina);
System.out.printf ("Depth first search...\n\n");
depthFirstSearchMap (Romania);
depthFirstSearchMap = new ClassObject(Romaina);
System.out.printf ("Depth limited search...\n\n");      
 depthLimitedSearchMap (Romania); 
}
于 2013-04-10T18:26:11.320 回答