gpt4 book ai didi

java - 通过键比较两个散列图并返回频率不同的键

转载 作者:行者123 更新时间:2023-11-30 07:51:19 24 4
gpt4 key购买 nike

我想按键对两个 HashMap 进行排序并比较它们的值并打印出所有不具有相同值的键。你能帮我怎么做吗?这是我的代码如下。我是Java新手,正在一一学习数据结构。感谢您的帮助。

代码:-

import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class Solution {

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int val;

int n = scan.nextInt();
HashMap<Integer,Integer> h1 = new HashMap<Integer,Integer>();

for( int i=0;i<n;i++ ) {
val = scan.nextInt();
if(!h1.containsKey(val)) {
h1.put(val,1);
}
else {
h1.put(val,h1.get(val)+1);
}
}

int m = scan.nextInt();

HashMap<Integer,Integer> h2 = new HashMap<Integer,Integer>();

for( int i=0;i<m;i++ ) {
val = scan.nextInt();
if(!h2.containsKey(val)) {
h2.put(val,1);
}
else {
h2.put(val,h2.get(val)+1);
}
}

System.out.println(h1.keySet());
System.out.println(h1.values());
System.out.println(h2.keySet());
System.out.println(h2.values());

}
}

最佳答案

您无需对 HashMap 进行排序即可生成所需的输出。相反,构造一个 TreeSet<Integer>包含来自两个映射的键的联合,就像这样

SortedSet<Integer> allKeysSorted = new TreeSet<Integer>();
allKeysSorted.addAll(h1.keySet());
allKeysSorted.addAll(h2.keySet());

使用 TreeSet确保您的 key 已排序。现在你可以迭代 allKeysSorted ,从每个map中获取对应的值,并进行相应的比较:

for (Integer key : allKeysSorted) {
int v1, v2;
if (h1.containsKey(key)) {
v1 = h1.get(key);
} else {
v1 = 0;
}
if (h2.containsKey(key)) {
v2 = h2.get(key);
} else {
v2 = 0;
}
... // Compare v1 and v2 here
}

关于java - 通过键比较两个散列图并返回频率不同的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47317395/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com