问题已经回答。由于帖子中嵌入了业务习语,因此删除了该帖子。谢谢!

最佳答案

如果N是systemName中的项目数,M是systemData中的项目数,那么您已经有效地构建了O(N * M)方法。

如果改为用systemData值将HashMap表示为AbstractSystemAbstractSystem.getSerial(),则只需遍历systemName集合并按systemName.getId()查找。这变得更像O(N + M)。

(您可能要避免使用iteriter2temp2等变量,因为它们会使代码更难阅读。)

编辑-这是我的意思:

// 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。如果没有,您可以在这里自己构建地图。

10-04 11:19