職場のプログラムに必要な複雑なロジックを理解するのに少し問題があります。HashMap内の2D配列の長さ
このプログラムは、2つのフォルダ間の「トランザクション」を比較するように設計されています。各フォルダには任意の数のファイルを含めることができ、各ファイル(XMLドキュメント)には任意の数のトランザクションを含めることができます。各トランザクションには5つのタグがあります。
2つのフォルダを比較して、一致するトランザクションがあるかどうかを確認する必要があります。
これを行うには、HashMap
を使用し、その内部にString[][]
の配列を入れています。 HashMap
の各キーは1つのファイルを表します。文字列の行はトランザクションを表し、列はタグを表します。
からString[][]
にアクセスする方法を調べるのに問題があります。私はトランザクション(行)の数を取得する必要があります。ここで
私は上記を行う方法です。
// Creating the HashMap and Array[][]
public static Map<Integer, String[][]> Pain008TransactionsCollection = new HashMap();
public static String[][] Pain008Transactions;
//Here is the logic where I populate the HashMap.
int transactionSize = EndToEndId.size();
//Creates a 2D array with one dimension for each transaction and six dimensions
//for relevant tags + filename.
Pain008Transactions = new String[transactionSize][6];
//For each transaction..
for(int i = 0; i < transactionSize; i++){
//Below will add each value into the 2D array for each transaction. Note that the
//filename is also added so that it can be easily associated with a transaction later.
Pain008Transactions[i][0]=EndToEndId.get(i);
Pain008Transactions[i][1]=InstdAmt.get(i);
Pain008Transactions[i][2]=MmbId.get(i);
Pain008Transactions[i][3]=DbtrNm.get(i);
Pain008Transactions[i][4]=OthrId.get(i);
Pain008Transactions[i][5]=GetFiles.pain008Files.get(currentFile).toString();
}
//Puts the 2D array into the collections map at the position of the current
//file in sequence.
Pain008TransactionsCollection.put(currentFile, Pain008Transactions);
System.out.println(Pain008TransactionsCollection);
私はこれを使用HashMap
、キーの数の合計を取得することを知っている:
Pain008TransactionsCollection.size()
を、私はのための行を取得するために知っています文字列[] []私は
Pain008Transactions.length()
を使用しかし、私はを呼び出す方法を確認していません0キーを押し、その特定のキーの行の長さを取得します。
本当にありがとうございます。
ここに2D配列を作成するのではなく、カスタムオブジェクトのリストを導入する方がよいでしょう。したがって、必要な6つのフィールドを持つクラスを定義し、クラスインスタンスのリストをリストに格納することができます。また、生の型を使わないで 'new HashMap()'の代わりに 'new HashMap <>()'を使ってください。 –
Javaコーディングスタイルのガイドを参照してください。変数名はcamelCaseになります(UpperCaseを起動しないように)。変数名に "collection"のようなものを入れることも悪い考えです。どうして "transactionsByIndex"なんかそんなことないの? – GhostCat
それについて考えてみましょう:本当に**奇妙な**あなたのマップキーは整数になると思う?おそらくあなたはさらに後退し、** more **抽象概念を導入しようとします。たとえば、**遷移**を表すクラスです。そのクラスは5つの属性を知っています。例えば2つのトランザクションを比較するメソッドを持っています。したがって、低レベルの2次元文字列配列から離れてください。そうしないと、**低レベルの配列操作コードをたくさん書いて**たくさんの時間を費やすでしょう。エディタを閉じると、それはメンテナンスの悪夢に変わります。 – GhostCat