【问题标题】:How to compare two Hashtables with multiple duplicate values in both如何比较两个哈希表中的多个重复值
【发布时间】:2021-07-19 18:10:08
【问题描述】:
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% 的值相同。

【问题讨论】:

  • Map 不能包含重复的键(即彼此相等的键),并且您的示例说 List1&lt;V,K&gt; 这是......没有任何意义。您能否提供一些您输入的实际代码?您还需要一个更精确的定义,“如何平等”是什么意思? [A=1] 和 [A=2] 有多相等? 50%? 0%?
  • 它们在同一个映射中具有不同的键但相同的值。
  • 我有两个哈希表,其中包含单词作为值和数字作为键。两个表中都有重复的值,但它们有不同的键。我想比较两个哈希表的相等程度。现在我正在尝试将这两个表与值而不是键进行比较。由于它们是错误的百分比中的重复值。
  • 抱歉输入有误,我已经更正了! @Joachim Sauer
  • @BadBoysTrue:很公平,但我们仍然不知道你想用什么指标来衡量“平等”? {1=A}/{1=B}{1=A}/{2=A}{1=A, 2=B}/{1=A} 的期望输出是什么?

标签: java list hashtable


【解决方案1】:

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

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();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-12
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    相关资源
    最近更新 更多