効率的にJavaでオブジェクトのリスト内のチェックマップを比較

メル:

だから、私は(対応するgetterとsetterで、もちろん)それ内部HashMapを持つオブジェクトを、持っています。

public class ObjA {
   private HashMap<String, Boolean> mymap;
   ...
}

その後、私はそれらのオブジェクト(および対応するゲッター/セッター)のリストを別のクラスを持っています:

public class ObjB {
   private List<ObjA> list;
   ...
}

次に、第3のクラスは、CheckerClassどのように多くチェックする必要があるObjA内部リストでObjB同じマップ(各キーのためにこの手段同じキーと同じ値)を持っています。

私の最初の考えはだった:ループlist、およびそれぞれのObjAパースへのマップString上のすべてのparsingsを収集Collectionして、重複を数えます。しかし、私はより多くのメモリを効率的に、そしてより多くのエレガントな何かをしたい:あなたが知っている、読みやすいです。そして、私はそれを取得するかどうかはわかりません。

スプリンター:

ここではそれぞれのユニークなマップの数を作成する方法があります:

list.stream().collect(Collectors.groupingBy(ObjA::getMyMap, Collectors.counting());

この作品のためには、Map.equals正確に何をしたいん:チェックキーセットが同じ値に同じとマップされている場合。

それでは、各ユニークなマップのためにあなたはそれがリストに表示された回数を見つけることができます。あなたが特にありますどのように多くの重複を知りたい場合は、その後、使用し.values().stream().filter(c -> c > 1).count()た地図上。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=318156&siteId=1