LZW压缩算法实现

时间:2015-09-26 07:55:56

标签: java compression lzw

我一直在阅读基于字典的压缩算法,包括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;
    }

1 个答案:

答案 0 :(得分:1)

您的字典大小为32,767项。 (短) 您没有限制它的大小并且不检查它。它适用于小文件。大文件的数据丢失。