我有一个
HashMap<Character, Integer>
可以计算字符串中字母的频率,称为 freq
。例如,如果单词是 PUPPY,则映射包含值 {P=3, U=1, Y=1}
。
我正在用它来玩类似单词的游戏。当为提交的猜测的字母分配黄色和绿色时,我会从字母的频率中减去,这样分配的颜色就不会比字母多。
因此,如果目标单词是 PUPPY 并且用户猜测 PRUNE,那么第一次猜测时颜色效果很好,但地图值会变成
{P=2, U=0, Y=1}
。我需要频率返回到原始值。
我尝试创建第二个相同类型的哈希图并将
revert
(我的第二个哈希图)设置为freq
,然后在函数执行后将freq
设置为revert
,但它保留了更改后的值。
复制一份,根据需要修改然后丢弃:
Map<Character, Integer> originalFreq = ...;
while (<making guesses>) {
Map<Character, Integer> guessFreq = new HashMap<>(originalFreq); // make fresh copy
// modify guessFreq as you like - it will be discarded next loop iteration
}