J'ai un type de données (appelons-il des données) qui contient 2 informations:Stockage grande quantité de configurations en java
int config
byte weight
Ce type de données est la conversion d'une série de 32 booléens. Je dois effectuer des changements à ces 32 booléens le convertir en ce type de données et le stocker. Le problème est que je veux seulement stocker des entrées uniques en éliminant les doublons. Le problème est qu'il existe 2^33 configurations possibles pour ce type de données.
J'ai essayé quelque chose comme ceci:
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++;
}
}
L'initiation de la position se fait et l'augmentation est fait pour chaque fois que je recherche le tableau que dans les positions occupées. Mon problème est que vous pouvez voir que le tableau est seulement de la taille 1500000. Lequel j'ai besoin d'être beaucoup plus grand. Cependant, même l'attribution d'un entier de taille maximale (j'ai besoin d'un long pour faire un tableau de la taille dont j'ai vraiment besoin) provoque une erreur de mémoire insuffisante. En outre, ma fonction de champ de recherche semble ne pas comparer correctement la clé et la configuration stockées à cette position.
Quelqu'un peut-il me dire ce que je peux faire pour corriger ces erreurs ou suggérer une approche différente pour stocker ces données.
la position de chaque 'Data' est-elle importante, ou avez-vous juste besoin de tester l'existence/l'appartenance? – JesseTG
aucune position est sans conséquence –
'HashSet' il est, alors. – JesseTG