是否可以在VBox容器中找到特定的超链接?
说我有代码,可以动态地将超链接添加到VBox元素中,但我不想两次添加相同的链接,这里最简单的方法是什么想法?
我想到的是通过执行以下操作来搜索并查看Hyperlink是否已经在VBox中:
myContainer.getChildren().forEach(node -> {
if(node.getClass().getSimpleName().equals("Hyperlink") {
Node n = node.getClass();
// Do my stuff
}
});
答案 0 :(得分:1)
您的代码比较了类名(没有包),因此您无法区分这种方式的各种超链接。
您可以做的是为每个Hyperlink
分配一个基于URL的ID:
String url = ...
String urlToID = String.valueOf(url.hashCode());
...
// check if that urlToID is already present
boolean present = false;
for (Node child : myContainer.getChildren()) {
if (child.getId().equals(urlToID)) {
present = true;
break;
}
if (!present) {
Hyperlink link = ...
link.setId(urlToID);
myContainer.getChildren().add(link);
}
for循环可以使用流进一步优化,但我认为这更具可读性:
boolean present = myContainer.getChildren().stream().filter(node ->
return node.getId().equals(urlToId);)
.findFirst().isPresent();