尝试将HashSet元素与List中的元素进行比较

时间:2012-11-05 20:26:18

标签: java list hashset

问题已得到解答。由于嵌入在其中的业务习语而删除帖子。谢谢!

1 个答案:

答案 0 :(得分:1)

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

如果您将systemData代表HashMap AbstractSystemAbstractSystem.getSerial()个值,那么您只需遍历systemName集合并通过{查找{ {1}}。这变得更像O(N + M)。

(您可能希望避免使用systemName.getId()iteriter2等变量,因为这些变量会使代码难以阅读。)

编辑 - 这就是我的意思:

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()其他位置。如果没有,你可以在这里自己构建地图。