У меня есть Java-программа с картой типа <String, Project>
, которая содержит все объекты Project, а каждый объект Project содержит список связанных объектов Process, т. Е. List<Process>
.
public class Project {
private String name;
private Path path;
private List<Process> processes;
\\ getters and setters follow
и * 1006.*
public class Process {
private String name;
private String path;
private String flow;
\\getters and setters follow
Я пишу функцию для определения расстояния строки (используя JaroWinklerDistance
) между flow
каждого 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()
}
}
}
}
}
Есть ли более эффективный и элегантный способ достижения этого?