У меня есть тип данные (назовем его данные), который содержит 2 порции информации:Хранение большого количества конфигураций в Java
int config
byte weight
Этого типа данных являются преобразованием из серии 32 Булевых. Я должен выполнить изменения этих 32 булевых преобразований обратно в этот тип данных и сохранить его. Проблема заключается в том, что я хочу хранить только уникальные записи, исключающие любые дубликаты. Проблема в том, что для этого типа данных существует 2^33 возможных конфигураций.
Я пытался что-то вроде этого:
static class searchedconfigs {
Data[] searchedconfigs;
int position;
public searchedconfigs() {
searchedconfigs = new Data[150000];
}
public void initiateposition() {
position = 0;
}
public boolean searchfield(Data Key, int entries) {
boolean exists = false;
for (int i = 0; i <= entries; i++) {
if (searchedconfigs[i] == Key) {
System.out.println("break");
exists = true;
break;
}
}
return exists;
}
public void add(Data config, int position) {
searchedconfigs[position] = config;
}
public int getPosition() {
return position;
}
public void storePosition() {
position++;
}
}
Инициирования положения делается и увеличение делаются поэтому каждый раз, когда я искать массив только в занимаемых позициях. Моя проблема заключается в том, что вы можете видеть, что массив имеет размер только 1500000. Который должен быть намного больше. Однако даже присваивание int максимального размера (мне нужно сделать длинный массив нужного размера) вызывает ошибку из памяти. Кроме того, моя функция поиска по-видимому, неправильно сравнивает ключ и конфигурацию, хранящиеся в этой позиции.
Может ли кто-нибудь сказать мне, что я могу сделать, чтобы исправить эти ошибки или предложить другой подход для хранения этих данных.
Является ли позиция каждого «Данные» важна, или вам просто нужно проверить наличие/членство? – JesseTG
никакой позиции не имеет значения –
'HashSet' это. – JesseTG