问题已经回答。由于帖子中嵌入了业务习语,因此删除了该帖子。谢谢!
最佳答案
如果N是systemName
中的项目数,M是systemData
中的项目数,那么您已经有效地构建了O(N * M)方法。
如果改为用systemData
值将HashMap
表示为AbstractSystem
的AbstractSystem.getSerial()
,则只需遍历systemName
集合并按systemName.getId()
查找。这变得更像O(N + M)。
(您可能要避免使用iter
,iter2
,temp2
等变量,因为它们会使代码更难阅读。)
编辑-这是我的意思:
// Retrieve system list from database
HashMap<Integer, AbstractSystem> systemDataMap = new HashMap<AbstractSystem>(
systemService.getSystemDataMap());
// Retrieve system info from cloud API
List<SystemName> systemNames = cloudClass.getImages();
for (SystemName systemName : systemNames) {
if (systemDataMap.containsKey(systemName.getId()) {
System.out.println("This will be slow...");
}
}
我使用Integer是因为我无法从您的代码中分辨出
AbstractSystem.getSerial()
或SystemName.getId()
的类型。假设您将系统数据另存为Map
。如果没有,您可以在这里自己构建地图。