0
我正在編寫一個應用程序,重新發送根據發件人,收件人和短信中使用的關鍵字收到的郵件。我有一個類從sqlite中獲取並返回三個哈希表中的對象,如下所示。Java從對象創建分組哈希表
receivedMessages=>map(
0=>map("_ID"=>1,
"sender"=>"*",
"recipient"=>"*",
"keyword"=>"*"
),
1=>map("_ID"=>2,
"sender"=>"8080",
"recipient"=>"*",
"keyword"=>"*"
),
2=>map("_ID"=>3,
"sender"=>"*",
"recipient"=>"22255",
"keyword"=>"*"
)
)
我將在陣列中使用每個它們的性質和它們的相應值的愛將它們分組地圖中的,而不是每次讀它們,因爲效率的。從hashmap 1000次獲取比從sqlite 1000次讀取更有效率。我想把它們放在一個hashmap或其他有效的容器上,如下所示。
messages=>map(
"hashmapSenders"=>map(
"*"=>map(1,3),
"8080"=>1,
)
"hashmapRecipients"=>map(
"*"=>map(1,2),
"22255"=>3,
)
"hashmapKeywords"=>map(
"*"=>map(1,2,3)
)
)
,這樣,當我想所有的發件人和值包含我會打電話給 messages.get(「hashmapSenders」);
或者要獲得收件人和包含的值,我將致電 messages.get(「hashmapRecipients」);
或者獲取關鍵字和包含的值我將調用 messages.get(「hashmapKeywords」);
這裏是我迄今爲止
ArrayList<HashMap<String, String>> receivedMessages = getAllMessages();
Iterator<HashMap<String, String>> iterator = receivedMessages.iterator();
HashMap<String, HashMap<String, String>> messages = new HashMap<>();
HashMap<String, String> hashmapSenders = new HashMap<>();
HashMap<String, String> hashmapRecipients = new HashMap<>();
HashMap<String, String> hashmapKeywords = new HashMap<>();
while (iterator.hasNext()) {
HashMap<String, String> map = iterator.next();
hashmapSenders.put(map.get("sender"),map.get("_ID"));
hashmapRecipients.put(map.get("recipient"),map.get("_ID"));
hashmapRecipients.put(map.get("keyword"),map.get("_ID"));
}
messages.put("hashmapSenders", hashmapSenders);
messages.put("hashmapRecipients", hashmapRecipients);
messages.put("hashmapKeywords", hashmapKeywords);
的問題在我的代碼是,新的值將覆蓋舊值,所以我不會讓我想要的結果。請指教。謝謝。
聲明HashMap中爲'的HashMap <字符串,ArrayList的>',然後將值代入指定鍵的ArrayList。這樣你可以存儲更多的一個值。 –
SomeJavaGuy
如何在仍處於循環中的情況下在arraylist中插入值?我應該將它們分組 – sammyukavi
我想你會在循環中調用'hashmapSenders.put(map.get(「sender」),map.get(「_ID」))'或者其中任何一個時覆蓋值接下來是'put'的調用。 – SomeJavaGuy