java在一个大的二维数组中存储布尔值
我需要在一个大的二维坐标系中标记坐标。开始时,所有坐标都为false(未访问)。在运行应用程序的生命周期内,只传递一小部分坐标
我想把这些信息存储在一个二维布尔数组中
Boolean[][] booleans = new Boolean[200000][200000];
但这当然会带来Java堆空间
因为99,9%永远都是假的,有没有其他方法可以将数据存储在多维数组中,所以只有真值需要内存
你可以在下面搜索框中键入要查询的问题!
我需要在一个大的二维坐标系中标记坐标。开始时,所有坐标都为false(未访问)。在运行应用程序的生命周期内,只传递一小部分坐标
我想把这些信息存储在一个二维布尔数组中
Boolean[][] booleans = new Boolean[200000][200000];
但这当然会带来Java堆空间
因为99,9%永远都是假的,有没有其他方法可以将数据存储在多维数组中,所以只有真值需要内存
# 1 楼答案
可以使用
Set<Pair>
,其中Pair
是POJO,带有:这个集合只存储带有
true
的值,所以如果列表不包含Pair(x, y)
,这意味着它是false