Хранение логических значений в большом двумерном массиве - PullRequest
0 голосов
/ 01 декабря 2018

Мне нужно пометить координаты как доступные в большой двумерной системе координат.При запуске все координаты ложные (недоступны).Только небольшая часть координат будет передана во время жизни запущенного приложения.

Я думал сохранить эту информацию в 2-мерном логическом массиве.

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

Но, конечно, это будетбросить пространство кучи Java.

Поскольку 99,9% будут когда-либо ложными, есть ли другой способ хранения данных в многомерном массиве, поэтому только истинным значениям требуется память?

1 Ответ

0 голосов
/ 01 декабря 2018

Вы можете использовать Set<Pair>, где Pair - это POJO с:

private int x;
private int y;

И этот набор хранит только значения с true, поэтому, если список не содержит Pair(x, y), это означает, что этоложь.

...