【发布时间】:2019-07-12 14:02:07
【问题描述】:
我有一个 Java 程序,其类型为 <String, Project> 的 Map 包含所有 Project 对象,并且 Project 的每个对象都包含一个相关 Process 对象的列表,即 List<Process>。
public class Project {
private String name;
private Path path;
private List<Process> processes;
\\ getters and setters follow
和
public class Process {
private String name;
private String path;
private String flow;
\\getters and setters follow
我正在编写一个函数来查找每个flow 之间的字符串距离(使用JaroWinklerDistance)Process(在所有项目中)。我想出了以下几点:
public void compareAllProcesses(Map<String, Project> projects) {
Iterator<Project> projIter1 = projects.values().iterator();
while(projIter1.hasNext()) {
Project proj1 = projIter1.next();
Iterator<Process> procIter1 = proj1.getProcesses().iterator();
while(procIter1.hasNext()) {
Process proc1 = procIter1.next();
Iterator<Project> projIter2 = projects.values().iterator();
while(projIter2.hasNext()) {
Project proj2 = projIter2.next();
Iterator<Process> procIter2 = proj2.getProcesses().iterator();
while(procIter2.hasNext()) {
Process proc2 = procIter2.next();
//use JaroWinklerDistance to compare proc1.getFlow() with proc2.getFLow()
}
}
}
}
}
有没有更高效、更优雅的方式来实现这一点?
【问题讨论】:
-
比较到底是什么意思?你想从比较中得到什么?
-
@Kartik 我已经编辑了我的帖子以指定我希望进行的比较
-
您确定要将每个进程与其他进程进行比较吗?表现会很差。对于 10 个项目,每个项目有 10 个流程,这将是 10k 次比较。
标签: java performance arraylist hashmap iterator