Saya memiliki varian yang sedikit berbeda dari masalah ini: Ini diperlukan untuk mengaitkan dua nilai berbeda dengan kunci yang sama. Hanya mempostingnya di sini jika itu membantu orang lain, saya telah memperkenalkan HashMap sebagai nilainya:
/* @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 );
}
}
Dalam kode di atas, key frameID dibaca dari string pertama file input di setiap baris, nilai untuk frameTypeHash dibangun dengan memisahkan baris yang tersisa dan disimpan sebagai objek String aslinya, selama periode waktu file mulai memiliki beberapa baris ( dengan nilai yang berbeda) terkait dengan kunci frameID yang sama, sehingga frameTypeHash diganti dengan baris terakhir sebagai nilainya. Saya mengganti objek String dengan objek HashMap lain sebagai bidang nilai, ini membantu dalam mempertahankan kunci tunggal untuk pemetaan nilai yang berbeda.