私は、JavaでRFIDリーダーアプリケーションを開発しています。リーダーの結果を抽出するのが難しいです。同じHashmapキーに埋め込まれたArrayList内に特定の値を描画するにはどうすればよいですか?
戻り値のデータ型が異なるため、RFIDタグを読み取るメソッドは、その値を「String」および「Integers」のキーでLinkedHashMapに埋め込まれたArrayListに入力します。
LinkedHashMap lhm = new LinkedHashMap();
List<String> listOfStringVals = new ArrayList<String>();
List<Integer> listOfIntVals = new ArrayList<Integer>();
String tagID = null;
String TimeStamp = null;
String Date = null;
String Time = null;
int tagAntenna = 0;
tagReads = r.read(1000);
// Print tag reads
for (TagReadData tr : tagReads)
{
tagID = tr.epcString();
Date = df.format(new Date());
Time = tf.format(new Date());
TimeStamp = Date + " " + Time;
tagAntenna = tr.getAntenna();
listOfStringVals.add(tagID);
listOfStringVals.add(TimeStamp);
listOfIntVals.add(tagAntenna);
lhm.put("strings", listOfStringVals);
lhm.put("integers", listOfIntVals);
// Shut down reader
r.destroy();
}
connect.insertData(lhm);
LinkedHashMapは、抽出するための別のメソッドに転送されます。これにより
System.out.println("Fetching Keys and corresponding [Multiple] Values ");
for (Map.Entry<String, List<String>> entry : readMap.entrySet()) {
String key = entry.getKey();
List<String> values = entry.getValue();
System.out.println("Key = " + key);
System.out.println("Values = " + values);
}
System.out.println(" Insert Complete! ");
私は、コンソールに次のように取得する:
Fetching Keys and corresponding [Multiple] Values
Key = strings
Values = [tagid1, timestamp1, tagid2, timestamp3, tagid3, timestamp3]
Key = integers
Values = [antenna1, antenna2, antenna3]
Insert Complete!
は何のコード私がのコレクションを分離(TAGID、タイムスタンプ、および同じ数のグループのアンテナを得ることができるように追加する必要がありますそれぞれが元々属するタグへの値)
EDIT:JSON
で入力の 例var tagReads = [{
"epc" : "0048029C130143700278303F",
"timestamp" : "2016-01-02 10:20:45",
"antenna" : "1"
},
{
"epc" : "0048029C1301437002783031",
"timestamp" : "2016-01-02 10:20:45",
"antenna" : "1"
}
{
"epc" : "0048029C130143700278305F",
"timestamp" : "2016-01-03 12:12:00",
"antenna" : "2"
}];
私たちにサンプル値を入力してわかりやすくしてください。 – dambros
申し訳ありませんが、私はJSONについて多くのことを読んでいませんでした。 – Lagostax
あなたのコードにはいくつかのエラーがあるようです。 Collection lhmはインスタンス化されず、forループ内でr.destroyを呼び出すので、最初のタグを読み取らず、2番目のタグを読み取る前にリーダーを破棄しますか? –