将布尔值存储在较大的二维数组中

时间:2018-12-01 18:20:01

标签: java memory boolean

我需要将坐标标记为在大型二维坐标系中访问的坐标。开始时,所有坐标均为假(无法访问)。在正在运行的应用程序的生命周期内,只有一小部分坐标会通过。

我想将此信息存储在2维布尔数组中。

Boolean[][] booleans = new Boolean[200000][200000];

但是,这当然会抛出Java堆空间。

因为99.9%的结果都是假的,是否有另一种方法可以将数据存储在多维数组中,所以只有真正的值才需要内存?

1 个答案:

答案 0 :(得分:1)

您可以使用Set<Pair>(其中Pair是POJO)

private int x;
private int y;

此集合仅存储带有true的值,因此,如果列表不包含Pair(x, y),则表示它是错误的。