Mel*_*Mel 1 java memory collections hashmap
所以,我有一个对象,里面有一个哈希表(当然,还有相应的getter和setter)。
public class ObjA {
private HashMap<String, Boolean> mymap;
...
}
Run Code Online (Sandbox Code Playgroud)
然后,我还有另一个类,其中列出了这些对象(以及相应的getter / setter):
public class ObjB {
private List<ObjA> list;
...
}
Run Code Online (Sandbox Code Playgroud)
然后,第三类 CheckerClass需要检查ObjA列表中的多少个对象ObjB具有相同的映射(这意味着相同的键和每个键的值)。
我最初的想法是:循环list,然后将每个ObjA映射解析为String。收集对的所有分析Collection,然后计算重复项。但是我希望有一些内存效率更高,更优雅的东西:您知道,容易阅读。而且我不确定如何获得它。
这是创建每个唯一地图计数的一种方法:
list.stream().collect(Collectors.groupingBy(ObjA::getMyMap, Collectors.counting());
Run Code Online (Sandbox Code Playgroud)
这之所以有效Map.equals,是因为它确实满足您的要求:检查键集是否相同并映射为相等的值。
因此,对于每个唯一地图,您都可以找到它出现在列表中的次数。或者,如果您特别想知道有多少个重复项,请.values().stream().filter(c -> c > 1).count()在结果图上使用。