Bu sorunun biraz farklı bir varyantı vardı: İki farklı değeri aynı anahtarla ilişkilendirmek gerekiyordu. Başkalarına yardımcı olması durumunda buraya gönderiyorum, değer olarak bir HashMap ekledim:
/* @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 );
}
}
Yukarıdaki kodda, ana çerçeve kimliği, her satırdaki bir girdi dosyasının ilk dizesinden okunur, frameTypeHash değeri, kalan satırı bölerek oluşturulur ve orijinal olarak String nesnesi olarak depolanır, bir süre boyunca dosyanın birden çok satıra sahip olmaya başladığı ( farklı değerlerle) aynı frameID anahtarıyla ilişkilendirildiğinden, değer olarak son satırı frameTypeHash üzerine yazılmıştır. String nesnesini, değer alanı olarak başka bir HashMap nesnesiyle değiştirdim, bu, farklı değer eşlemelerine tek anahtarın korunmasına yardımcı oldu.