我需要将坐标标记为在大的二维坐标系中访问。开始时,所有坐标都为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。