Java:如何有效地存储稀疏数据

时间:2014-11-24 11:10:37

标签: java data-structures sparse-matrix

我有超过10亿件物品,大约有1000列(一个矩阵)。但是对于95%列的唯一值比率小于百分比,所以这些数据可以归类为稀疏数据

在Java中存储这样的数据有什么方便和有效的解决方案?

2 个答案:

答案 0 :(得分:1)

不确定你是否已经考虑过这一点。如果你真的拥有数十亿行,即使你找到了一种有效存储稀疏矩阵的机制,你也可能会在内存中保存那么多数据时遇到问题。

但是,您可以使用一个简单的地图,其键为Pair,其中包含数据的行和列。

public class Pair<P, Q> {

    public final P p;
    public final Q q;

    public Pair(P p, Q q) {
        this.p = p;
        this.q = q;
    }

    // TODO: Implement equals and hashCode.
}

class Datum {
}
// My sparse database.
Map<Pair<Integer, Integer>, Datum> data = new HashMap<>();

这将使用接近最小的存储空间,但不一定能解决您的问题。

答案 1 :(得分:0)

我认为HashTable最适合这样做... key-value对效率相同value,即key多个value