我一直在阅读基于字典的压缩算法,包括LZW和LZSS。然后,我想用Java实现LZW并开始研究它。我不是开发人员,所以我怀疑我的实现可能效率不高。你能看一下代码并告诉我实现中有什么问题或效率低下吗?这是完整的代码。
public static Dictionary<Tuple<int, int>, double> GetSetDifference(
Dictionary<Tuple<int, int>, double> set1,
Dictionary<Tuple<int, int>, double> set2)
{
var result = new Dictionary<Tuple<int, int>, double>();
var keys = new HashSet<Tuple<int, int>>(set1.Keys);
keys.UnionWith(new HashSet<Tuple<int, int>>(set2.Keys));
foreach (var key in keys) {
double value = 0;
if (set2.ContainsKey(key)) value = set2[key];
if (set1.ContainsKey(key)) value -= set1[key];
result.Add(key, value);
}
return result;
}
答案 0 :(得分:1)
您的字典大小为32,767项。 (短) 您没有限制它的大小并且不检查它。它适用于小文件。大文件的数据丢失。