私は地図を値として、地図を値として(javaで)設定しています。それぞれをコピーし、エイリアシングを回避しようとする方法を書いたが、私のプログラムが動作するように、私は彼らの動作を確認していない。私はコピー方法を実行した後もエイリアシングがありますか?
private Map<String, Set<String>> deepCopySet(Map<String, Set<String>> ruledOutCount) {
Map<String,Set<String>> copy = new HashMap<String,Set<String>>();
for(Map.Entry<String, Set<String>> entry : ruledOutCount.entrySet())
{
copy.put(entry.getKey(), new HashSet<String>(entry.getValue()));
}
return copy;
}
private Map<SG, Map<classObj, Integer>> deepCopyMap(Map<SG, Map<classObj, Integer>> classCountPerSG)
{
Map<SG,Map<classObj,Integer>> copy = new HashMap<SG,Map<classObj,Integer>>();
for(Map.Entry<SG, Map<classObj,Integer>> entry : classCountPerSG.entrySet())
{
copy.put(entry.getKey(), new HashMap<classObj,Integer>(entry.getValue()));
}
return copy;
}
classObjとSGは自分自身のオブジェクトです。 これらのコピー方法を実行すると、エイリアシングが発生する可能性はありますか?おかげさまで
"私のプログラムが動作しているように、私は彼らが動作するかどうかはわかりません。"あなたはそれが何をすると思いますか、代わりに何をしますか? –