我有超过10亿件物品,大约有1000列(一个矩阵)。但是对于95%列的唯一值比率小于百分比,所以这些数据可以归类为稀疏数据。
在Java中存储这样的数据有什么方便和有效的解决方案?
答案 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
第