0

问题已得到解答。由于其中嵌入了商业成语,因此删除了该帖子。谢谢!

4

1 回答 1

1

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

如果您将您的值表示systemData为 a HashMapof ,那么您只需遍历集合并查找 by 。这变得更像 O(N+M)。AbstractSystemAbstractSystem.getSerial()systemNamesystemName.getId()

(您可能希望避免使用 、 、 等变量iteriter2因为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()or的类型SystemName.getId()。这假设您将系统数据存储为Map别处。如果没有,您可以在这里自己构建地图。

于 2012-11-05T21:22:24.940 回答