如何比较两个具有多个重复值的哈希表

问题描述

Hashtable<Integer,String> List1= new Hashtable<>();
List1.put(1,"A");
List1.put(2,"A");
List1.put(3,"B");
List1.put(4,"C");

Hashtable<Integer,String> List2= new Hashtable<>();
List2.put(1,"C");
List2.put(2,"C");
List2.put(3,"A");
List2.put(4,"B");

我有这两个表,如何比较它们并以百分比显示它们的相等程度? 假设这是两个哈希表。 例如:List1List2 具有 90% 的相同值。

解决方法

不太确定我是否理解正确,但这样的事情可能会解决您的问题:

public double calculateOverlapPercentage(Hashtable<Integer,String> list1,Hashtable<Integer,String> list2) {
    if (list1 == null || list2 == null || list1.isEmpty()) {
        return 0;
    }
    long overlapCount = list1.entrySet().stream().filter(l1 -> list2.containsValue(l1.getValue())).count();
    return (double) overlapCount / list1.size();
}