我有一个类项目,它使用一个字符作为标识符。
public class Item {
private char identifier;
private Set<Character> predecessors;
private Set<Character> successors;
// Constructor, getters and setters...
}
我希望能够检索由Path
类表示的路径,它包含item
的简单有序列表:
public class Path {
private List<Item> items;
// Constructor, getters and setters
}
为了存储和管理我的项目和路径,我使用了一个专用类。它包含两个set
,其中包含每种类型。我可以使用任务的标识符检索任务。
public class SimpleClass {
private Set<Item> items;
private Set<Path> paths;
// Constructor, getters and setters
public Optional<Item> getItemById(char identifier) {
/// ....
}
}
更新/注意:我正在寻找通过项目集构建路径
一种快速而肮脏的递归算法。我只是创建第一个地图,以加快项目检索。看看它是否管用,试着去理解它,去改变它。
/**
* Build all paths
*/
public void buildPaths() {
Map<Character,Item> itemsByID=new HashMap<>();
for (Item i:items) {
itemsByID.put(i.getIdentifier(), i);
}
List<Item> starts=items.stream().filter(i->i.getPredecessors().isEmpty()).collect(Collectors.toList());
for (Item st:starts) {
Path p=new Path();
p.getItems().add(st);
buildPath(p,itemsByID);
}
}
/**
* Build the next step of the given path
* @param p
* @param itemsByID
*/
private void buildPath(Path p,Map<Character,Item> itemsByID) {
Item last=p.getItems().get(p.getItems().size()-1);
Set<Character> successors=last.getSuccessors();
// no successor, path is finished, add to collection
if (successors.isEmpty()) {
paths.add(p);
// one successor continue on same path
} else if (successors.size()==1){
p.getItems().add(itemsByID.get(successors.iterator().next()));
buildPath(p,itemsByID);
} else {
// multiple successors, create a new path for each branch
for (Character c:successors) {
Path p1=new Path();
p1.getItems().addAll(p.getItems());
p1.getItems().add(itemsByID.get(c));
buildPath(p1, itemsByID);
}
}
}
当我运行此代码时: 我收到以下错误: org.openqa.selenium.InvalidSelectorException:无法计算xpath表达式'//输入[包含(@id,'name']'要留档此错误,请访问:http://seleniumhq.org/exceptions/invalid_selector_exception.html构建信息:版本:'2.20.0',修订版:'16008'
你知道为什么吗?
问题内容: 所以我有一个元组 我想从“ a”中删除所有具有共同的第二个元素的元组,但其中一个(其中任何一个)除外。 对于上面的示例,我想要新的输出 换句话说,我想消除在元组第二位置被视为重复元素的元组。 我想知道实现这一目标的最有效方法,也想知道我是否可以对列表而不是对元组做同样的事情? 问题答案: 您可以从元素中创建一个 字典 ,并使用任何您希望唯一的键作为键,然后提取值。这适用于“唯一”子元素
我试图通过selenium单击save按钮,但是,我得到的错误是它无法定位元素。 这是网站的html部分 这是我得到的错误: NoSuchelementException:没有这样的元素:找不到元素:{“method”:“id”,“selector”:“divflashviewermain_savepdfbuttonicon”} (会话信息:chrome=74.0.3729.169)(驱动程序信息
问题内容: 以下定位技术之间有什么区别? 而且,从 性能角度来看 ,哪种方法是通过id定位元素的最快方法? 问题答案: 您的问题很难回答,肯定会给出一个结论性的答案。实际上,我很想将此问题标记为“太宽泛”,其他答案和评论也支持该问题。 以您的为例。纵观Selenium来源, 大多数 驱动程序只是获取您提供的ID,然后将其传递给有线协议: 如您所知,每个浏览器供应商都在单独的二进制文件中实现自己的有
请帮助我,我正在尝试选择一个图片,这是一个链接(一个网站上的培训师) 这是我的代码: