![](/img/trans.png)
[英]How to put values from ArrayList of Arraylist with same value in hashmap
[英]How can I put multiple values to ArrayList using HashMap?
我收到了JSON對象,並對其進行了解析。
數據如下。
[Parsed_showinfo_2 @ 0x9b4da80] n:88 pts:17425897 pts_time:726.079 pos:149422375 fmt:rgb24 sar:405/404 s:640x360 i:P iskey:1 type:I checksum:48E13810 plane_checksum:[48E13810]
[Parsed_showinfo_2 @ 0x9b4da80] n:89 pts:17471943 pts_time:727.998 pos:149646339 fmt:rgb24 sar:405/404 s:640x360 i:P iskey:0 type:P checksum:1AAD40E0 plane_checksum:[1AAD40E0]
[Parsed_showinfo_2 @ 0x9b4da80] n:90 pts:17503975 pts_time:729.332 pos:149806608 fmt:rgb24 sar:405/404 s:640x360 i:P iskey:1 type:I checksum:3DA5F0DB plane_checksum:[3DA5F0DB]
然后,我確實使用JSONParser()解析了數據,因為我需要pts,pts_time值。
FileInputStream fstream = new FileInputStream("myfile");
DataInputStream in = new DataInputStream(fstream);
BufferedReader buff = new BufferedReader(new InputStreamReader(in));
//Which type put to ?
HashMap<String, ?> map = new HashMap<String, ?>();
//Should I use ArrayList too?
//ArrayList<HashMap<String, ?>> list = new ArrayList<HashMap<String, ?>>();
try {
while (strLine = buff.readLine()) != null) {
s = strLine.split(" ");
pts = Long.parseLong(s[4].split(":")[1]);
ptstime = s[5].split(":")[1];
}
} catch (IOException ex) { }
我想在while循環中創建多個數組,然后返回結果值。
像這樣:
["pts": {1, 2, 3, 4, 5}, "ptstime": {10.11, 13.003, 15.12, 16.53, 18.10}]
pts
和ptstime
是鍵。
我如何在while循環中編碼
這是您可以執行的操作:
Map<String, List<Object>> map = new HashMap<>();
...
while (strLine = buff.readLine()) != null) {
s = strLine.split(" ");
pts = Long.parseLong(s[4].split(":")[1]);
List<String> listPts = map.get("pts");
if (listPts == null) {
listPts = new ArrayList<>();
map.put("pts", listPts);
}
listPts.add(pts);
// Here apply the same logic to the rest
}
但是更好的方法可能是改為使用Map
List
,如下所示:
List<Map<String, Object>> list = new ArrayList<>();
while (strLine = buff.readLine()) != null) {
s = strLine.split(" ");
Map<String, String> map = new HashMap<>();
list.add(map);
pts = Long.parseLong(s[4].split(":")[1]);
map.put("pts", pts);
// Here apply the same logic to the rest
}
將DataInputStream
用作InputStreamReader
參數時,它的用途是什么, FileInputStream
應該已經可以了。
關於你的問題,我想你想要的是
Map<String, List<?>> map = new HashMap<>(2);
map.put("pts", new ArrayList<Long>());
map.put("ptstime", new ArrayList<Long>());
然后在while循環中
map.get("pts").add(pts.toString());
map.get("ptstime").add(ptstime);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.