我必須比較Java中的兩個類似表,可能使用集合類。但輸入源是剪貼板而不是數據庫。樣本表: -比較Java中的兩個表(不是數據庫)
Table1:
|EmpID| Name| Age|Dept|
|123|John|30|Ops|
|456|Peter|40|HR|
Table2:
|EmpID| Name| Age|Dept|
|123|John|30|Ops|
|462|Peter|40|Dev|
這裏僱員ID是唯一的。 Table1的Row1應與Table2的Row1比較&等。如果EmpID &中的相應列中的數據匹配,則應顯示爲匹配。 如果EmpID與第二行不匹配,則應報告爲差異,搜索表2的下一行&找到EmpID。報告是否匹配。 如果未找到,則應在Table1中報告額外報告或在Table2中報告Miss。所有這些行必須在比較爲Match,Diff,Extra或Miss之後進行報告。
試圖在此處使用嵌套的HashMap進行比較,當只比較一行時,它可以正常工作。 當多個行添加到HashMap中時,它執行笛卡爾產品比較I.e.表1,行1與表2,行2 &等因此得到錯誤的輸入。 (請參閱下面的示例代碼)。 能否請您建議我如何做這些比較/迭代,因爲我還必須在比較之後進行報告。
HashMap<String,String> Table1= new HashMap<String,String>();
Table1. put(Name, "John");
Table1. put(Age,"30");
Table1.put(Dept, "Ops");
HashMap<String,String> Table2= new HashMap<String,String>();
Table2.put(Name, "John");
Table2. put(Age,"30");
Table2.put(Dept, "Ops");
HashMap<String, HashMap<String, String>>Table3= new HashMap<String, HashMap<String,String>>();
Table3.put(EmpId, "123");
HashMap<String, HashMap<String, String>>Table4= new HashMap<String, HashMap<String,String>>();
Table4.put(EmpId, "123");
List<String> match = new List<String>();
List< String> diff = new List<String>();
for (String tempe: Table3.keySet()){
for(String temp: Table4.keySet()) {
If(tempe.equals temp){
System.out.println("Emp Id match");
for(String tem: Table1.keySet()){
for(String te: Table2.keySet()){
If(tem equals te){
match.add(tem);
}else{
diff.add(temp + te);
}
}
}
else{
System.out.println(" EmpId not matching");
}
}
}
for(String mat: match){
System.out println("Matched values: + mat ");
}
for(String dif: diff){
System.out.println("Different values: + dif");
}
所需的輸出是:
匹配度: 的Emp ID:123 鍵:名字,年齡,DEPT 值:約翰,30,行動
DIFF: 的Emp ID:456 重點:部門 值:人力資源,開發
附加: InTable1:的Emp ID:789(打印鍵&的值,如果有的話) 在表2:EMPID:879(打印中的任意鍵&值)
小姐: 在表1: 的Emp ID:489 名字,年齡,DEPT 的Xyz,26,行動 在表2:同樣如果有的話
你可以發佈你的例子所需的輸出嗎?要求對我來說不是很清楚 – Massimo
您應該使用類/對象來適當保存您的數據,當您發現自己嵌套地圖/集合時,幾乎總是有時間重新考慮設計(正如您所看到的,這會變得非常複雜和混亂)快速)。然後比較將是關於一行代碼 – Rogue