我已经编写了两个具有相同键但值不同的哈希图的程序
会话密钥和值 1:红色 2:绿色 3:蓝色 4:紫罗兰
数据库密钥和值 1:灰色 2:粉红色 3:蓝色 4:黑色
我想要实现的是比较两个hashmaps值并列出所有内容,但具有相同值的那些应该显示为true 像这样 1红灰色假 2绿粉色假 3蓝蓝色真实 4紫罗兰黑假
ClassComparator.java:我刚刚编写了这个程序来打印两个哈希映射的值,请为解决进一步的查询提供一些帮助。
public class ClassComparator {
Map<Integer, String> sessionValues;
Map<Integer, String> dbValues;
Map<Integer, String> combineKeyValues;
public ClassComparator() {
// /////popuulate session Values
combineKeyValues = new HashMap<Integer, String>();
sessionValues = new HashMap<Integer, String>();
sessionValues.put(1, "red");
sessionValues.put(2, "green");
sessionValues.put(3, "blue");
sessionValues.put(4, "violet");
System.out.println("Session Values : " + sessionValues);
dbValues = new HashMap<Integer, String>();
dbValues.put(1, "gray");
dbValues.put(2, "pink");
dbValues.put(3, "blue");
dbValues.put(4, "black");
System.out.println("Database Values : " + dbValues);
System.out.println("");
}
public List<QuestionResult> compareValues() {
List<QuestionResult> results = new ArrayList<QuestionResult>();
// /// comparison logic
System.out.println("Session Key and Values");
for (Map.Entry<Integer, String> sessionEntry : sessionValues.entrySet()) {
System.out.println(sessionEntry.getKey() + " : " +
sessionEntry.getValue());
}
System.out.println("");
System.out.println("Database Key and Values");
for (Map.Entry<Integer, String> dbEntry : dbValues.entrySet()) {
System.out.println(dbEntry.getKey() + " : " + dbEntry.getValue());
}
return results;
}
public static void main(String args[]) {
ClassComparator cc = new ClassComparator();
cc.compareValues();
}
谢谢。
答案 0 :(得分:3)
您不需要2个单独的循环。迭代第一个地图,并从其他地图获取该键的值,并进行比较。
示例代码:
Map<Integer, String> firstMap = new HashMap<Integer, String>();
Map<Integer, String> secondMap = new HashMap<Integer, String>();
for (Entry<Integer, String> firstEntry : firstMap.entrySet()) {
String firstMapValue = firstEntry.getValue();
String secondMapValue = secondMap.get(firstEntry.getKey());
System.out.println(firstEntry.getKey() + " " + firstMapValue + " " + secondMapValue + " " + firstMapValue.equals(secondMapValue));
}