おそらくコレクションクラスを使用して、Javaで2つの同様のテーブルを比較する必要があります。しかし、入力ソースはデータベースではなくクリップボードです。サンプルテーブル: -Javaで2つのテーブルを比較する(データベースではない)
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|
ここでEmp IDは一意です。 Table1のRow1はTable2のRow1と比較する必要があります&など。対応する列のEmpID &のデータが一致する場合は一致として表示されます。 EmpIDが2行目と一致しない場合は、Diffとして報告する必要があります。次の表2の検索で& EmpIDを見つけてください。一致する場合は報告してください。 見つからない場合は、Table1で余分、Table2でMissを報告する必要があります。これらの行は、比較後に一致、Diff、余分、または不一致として報告する必要があります。
ここでは比較目的で入れ子になったHashMapを使用しようとしました。 複数の行がHashMapに追加されるとき、それはデカルト積比較を実行する。表1、行1とTable2、行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 キー:名前、年齢、部門 値:ジョン、30、オプス
差分: のemp ID:456 キー:部門 値:HR、Devの
エクストラ: InTable1:EmpのID:789(キーを印刷値は、もしあれば)表2において :EMPID:879(任意のキー&値を出力)
ミス:表1に : のEmp ID:489 名前、年齢、オプス において部門 エクシーズ、26、表2:同様にある場合
あなたのサンプルから望ましい出力を投稿できますか?要件は私にはあまり明確ではない – Massimo
データを適切に保持するためにクラス/オブジェクトを使用する必要があります。マップ/コレクションを入れ子にしているときには、デザインを再考するのはほとんどいつものことです(ご覧のとおり、速い)。次に、比較は約1行のコードとなります – Rogue