0

質問は回答済みです。ビジネス慣用句が埋め込まれているため、投稿を削除します。ありがとう!

4

1 に答える 1

1

N が の項目数でsystemName、M が の項目数であるsystemData場合、O(N*M) メソッドを効果的に構築したことになります。

代わりにをby値systemDataとして表す場合は、コレクションをループして を参照するだけです。これは O(N+M) のようになります。HashMapAbstractSystemAbstractSystem.getSerial()systemNamesystemName.getId()

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...");
    }
}

AbstractSystem.getSerial()コードからorの型がわからないため、Integer を使用しましたSystemName.getId()。これは、システム データを別の場所に保存することを前提としていますMap。そうでない場合は、ここで自分でマップを作成できます。

于 2012-11-05T21:22:24.940 に答える