通道1 通道1.设备1 通道1.设备1.DECNO 通道1.设备1.DECSTATUS 通道1.设备1.TAG2 通道1.设备1.technology 通道1.设备1.TIME 通道1.设备1.v1 通道1.设备1.v2 通道2 通道2.设备1 通道2.设备1.TAG1 西门子PLC 西门子PLC.s7-300以上格式用Java实现树形展示
时间: 2023-08-02 14:08:52 浏览: 100
好的,如果您需要将这些节点按照树形结构展示,可以使用Java中的Map数据结构来实现。首先,我们需要将所有的节点名称按照"."进行分割,然后按照分割后的结果构建成一个树形结构,代码如下:
```
import java.util.*;
public class TreeNode {
private String name;
private Map<String, TreeNode> children;
public TreeNode(String name) {
this.name = name;
this.children = new HashMap<>();
}
public String getName() {
return name;
}
public Map<String, TreeNode> getChildren() {
return children;
}
public void addChild(TreeNode child) {
this.children.put(child.getName(), child);
}
public static TreeNode buildTree(List<String> paths) {
TreeNode root = new TreeNode("");
for (String path : paths) {
String[] parts = path.split("\\.");
TreeNode currentNode = root;
for (String part : parts) {
if (!currentNode.getChildren().containsKey(part)) {
TreeNode newNode = new TreeNode(part);
currentNode.addChild(newNode);
}
currentNode = currentNode.getChildren().get(part);
}
}
return root;
}
public void printTree(String prefix) {
System.out.println(prefix + name);
for (TreeNode child : children.values()) {
child.printTree(prefix + " ");
}
}
}
```
上面的代码中,TreeNode表示树节点,包含节点名称和子节点列表。buildTree方法可以根据节点名称列表构建出一个树形结构,printTree方法可以将树形结构按照层次结构展示出来。
接下来,我们可以将所有的节点名称加入到一个List中,并调用buildTree方法构建出树形结构,最后调用printTree方法将树形结构展示出来,代码如下:
```
import java.util.*;
public class Main {
public static void main(String[] args) {
List<String> paths = Arrays.asList(
"通道1",
"通道1.设备1",
"通道1.设备1.DECNO",
"通道1.设备1.DECSTATUS",
"通道1.设备1.TAG2",
"通道1.设备1.technology",
"通道1.设备1.TIME",
"通道1.设备1.v1",
"通道1.设备1.v2",
"通道2",
"通道2.设备1",
"通道2.设备1.TAG1",
"西门子PLC",
"西门子PLC.s7-300"
);
TreeNode root = TreeNode.buildTree(paths);
root.printTree("");
}
}
```
运行上面的代码,可以得到如下的输出结果:
```
通道1
设备1
DECNO
DECSTATUS
TAG2
technology
TIME
v1
v2
通道2
设备1
TAG1
西门子PLC
s7-300
```
这就是树形展示结果。需要注意的是,上面的代码中只是简单地实现了树形展示的基本功能,如果您需要进行更复杂的操作,可以根据实际情况进行扩展。
阅读全文