问题已得到解答。由于嵌入在其中的业务习语而删除帖子。谢谢!
答案 0 :(得分:1)
如果N是systemName
中的项目数,而M是systemData
中的项目数,那么您已经有效地构建了一个O(N * M)方法。
如果您将systemData
代表HashMap
AbstractSystem
个AbstractSystem.getSerial()
个值,那么您只需遍历systemName
集合并通过{查找{ {1}}。这变得更像O(N + M)。
(您可能希望避免使用systemName.getId()
,iter
,iter2
等变量,因为这些变量会使代码难以阅读。)
编辑 - 这就是我的意思:
temp2
我使用了Integer,因为我无法从您的代码中了解// 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...");
}
}
或AbstractSystem.getSerial()
的类型。这假设您将系统数据存储为SystemName.getId()
其他位置。如果没有,你可以在这里自己构建地图。