Java:为类的所有实例设置bool

Java:为类的所有实例设置bool,java,class,graph,Java,Class,Graph,我找了好几次,但都没找到线索 我正试图建立一个有向图。每个节点(类节点的实例)都应该保存一个已访问的bool,以查看它是否被搜索功能访问 搜索完成后,我想为类的所有实例重置bool visted,而不必再次运行它们 我有什么办法可以走吗?还是我完全走错了路 谢谢你的帮助和干杯, 迈克 //node.java 导入java.util.*; 公共类节点{ 私有国家; 私有静态int[]级别; 私有整数级; 私有int n_节点; 私有静态int id0=0; 私有int-id; 私人诊所; 下一个

我找了好几次,但都没找到线索

我正试图建立一个有向图。每个节点(类节点的实例)都应该保存一个已访问的
bool
,以查看它是否被搜索功能访问

搜索完成后,我想为类的所有实例重置
bool visted
,而不必再次运行它们

我有什么办法可以走吗?还是我完全走错了路

谢谢你的帮助和干杯, 迈克

//node.java
导入java.util.*;
公共类节点{
私有国家;
私有静态int[]级别;
私有整数级;
私有int n_节点;
私有静态int id0=0;
私有int-id;
私人诊所;
下一个列表=新的ArrayList();
节点(int n_节点,int级别){
id=id0;
id0++;
this.n_节点=n_节点;
这个水平=水平;
状态=新的int[n_节点];
访问=假;
fillLevels=新的int[n_节点];
}
void setFillLevel(int[]FillLevel){
this.fillLevels=fillLevels;
}
无效集合状态(int[]状态){
this.states=状态;
}   
无效设置状态(int状态,int值){
状态[状态]=值;
}
int getState(int state){
返回状态[状态];
}
void addLink(节点linkedNode){
next.add(linkedNode);
}
布尔值(){
回访;
}
int getNumLinks(){
返回next.size();
}
无效打印状态(){
System.out.println(“节点状态”#“+id+”在级别“+level+”:”;
int-cntr=0;
for(int i:国家){
System.out.println(cntr+“:”+i);
cntr++;
}
}
}

不要向节点添加
布尔
标志。它不是节点的存储属性,而是在其上运行的算法的临时属性

相反,保留一组单独的已访问节点,并在运行算法时在附加参数中传递:

Set<Node> visited = new HashSet<>();
Set visted=newhashset();
不要设置
node.visted=true
,而是使用
visted.add(node)
。使用
if(visted.contains(node))…


这种方法允许您通过调用
visited.clear()

一次重置所有已访问的“标志”。提供您迄今为止所做工作的示例。在创建节点时保留一个(静态?)节点集合,并在需要重置时对其进行迭代。因此,基本上:您必须遍历所有实例,没有其他方法。哦,好的。谢谢你告诉我。因此,我将创建一个我访问过的元素列表,并在完成后重置它们。这就是我正在寻找的!伟大的谢谢你,伙计。
// node.java
    import java.util.*;

    public class node {
        private int[] states;
        private static int[] fillLevels;
        private int level;
        private int n_nodes;
        private static int id0 = 0;
        private int id;
        private boolean visited;

        List<node> next = new ArrayList<node>();

        node(int n_nodes,int level){
            id=id0;
            id0++;
            this.n_nodes = n_nodes;
            this.level = level;
            states = new int[n_nodes];
            visited = false;
            fillLevels = new int[n_nodes];
        }

        void setfillLevels(int[] fillLevels){
            this.fillLevels = fillLevels;
        }

        void setStates(int[] states){
            this.states = states;
        }   

        void setState(int state, int value){
            states[state] = value;
        }

        int getState(int state){
            return states[state];
        }

        void addLink(node linkedNode){
            next.add(linkedNode);
        }

        boolean isVisited(){
            return visited;
        }

        int getNumLinks(){
            return next.size();
        }

        void printStates(){
            System.out.println("States of node #"+id+" on level "+level+":");
            int cntr = 0;
            for(int i:states){
                System.out.println(cntr+": "+i);
                cntr++; 
            }
        }
    }
Set<Node> visited = new HashSet<>();