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



我需要将坐标标记为在大的二维坐标系中访问。开始时,所有坐标都为false(未访问(。在运行应用程序的生命周期中,只传递一小部分坐标。

我想把这些信息存储在一个二维布尔数组中。

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

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

因为99,9%将永远是false,有没有其他方法可以将数据存储在多维数组中,所以只有true值需要内存?

您可以使用Set<Pair>,其中Pair是POJO,带有:

private int x;
private int y;

这个集合只存储有true的值,所以若列表不包含Pair(x, y),那个就意味着它是false。

最新更新