2016-09-24 4 views
-1

こんにちはちょうどこれを最適化する方法がある場合はあなたに尋ねたい:おそらくライブラリメソッドが役立ちますか?Java:ObjectList andObject2Listの属性をチェックする最適化

for (int i = 0; i < ids.size(); i++){ 
    for (int j = 0; j < obj.size(); j++){ 
     if (ids.get(i).equals(obj.get(j).getChatId())){ 
      // ... 
     } 
    } 
} 
+0

あなたは 'List obj'を意味しますか? –

+0

より適切なデータ構造を抽象化に使用できます。たとえば、idsに含まれていない 'id'を持つオブジェクトを拒否するために述語を渡すことで、" obj "をフィルタリングできます。あなたのモデルを適切に設計するのが面倒だと、図書館はあなたを助けません。 – kryger

+0

あなたの状態に合ったオブジェクトで何をしたいですか?別のリストに収集するには? –

答えて

1

あなたのコードがあるため、あなたのネストされたループで、はO(n×m個)時間で実行されます。

これを改善するには、まずidsコレクションをSetに変換してください。

Set<IdType> idSet = new HashSet<>(ids); 
for (ObjType o : obj) { 
    if (idSet.contains(o.getChatId())) { 
     // ... 
    } 
} 

add()O(1)あるので、セットの構成はO(N)であり、そしてので、新しいコードの性能はであることを意味O(1)、ありますO(n + m)

+0

ありがとうございました:) – Ayox

関連する問題