У мене був дещо інший варіант цього питання: Потрібно було пов'язати два різних значення з одним ключем. Просто розміщуючи його тут, якщо це допомагає іншим, я ввів HashMap як значення:
/* @param frameTypeHash: Key -> Integer (frameID), Value -> HashMap (innerMap)
@param innerMap: Key -> String (extIP), Value -> String
If the key exists, retrieve the stored HashMap innerMap
and put the constructed key, value pair
*/
if (frameTypeHash.containsKey(frameID)){
//Key exists, add the key/value to innerHashMap
HashMap innerMap = (HashMap)frameTypeHash.get(frameID);
innerMap.put(extIP, connName+":"+frameType+":"+interfaceName);
} else {
HashMap<String, String> innerMap = new HashMap<String, String>();
innerMap.put(extIP, connName+":"+frameType+":"+interfaceName);
// This means the key doesn't exists, adding it for the first time
frameTypeHash.put(frameID, innerMap );
}
}
У наведеному вище коді ключовий frameID зчитується з першого рядка вхідного файлу у кожному рядку, значення для frameTypeHash будується шляхом розбиття решти рядка і зберігається як об'єкт String спочатку протягом певного періоду часу, коли файл починає мати декілька рядків ( з різними значеннями), пов’язані з одним ключем frameID, тому frameTypeHash був перезаписаний останнім рядком як значення. Я замінив об'єкт String на інший об'єкт HashMap як поле значення, це допомогло в підтримці одного ключа для різного відображення значення.