Existe-t-il un moyen d'obtenir des lignes aléatoires à partir d'un trove (TObjectIntHashMap)? J'utilise Random pour tester à quelle vitesse un Trove peut chercher/charger 10 000 lignes. Plus précisément, j'aimerais passer un nombre entier aléatoire et demander au groupe de rechercher/charger cette ligne. J'ai essayé d'utiliser la méthode get(), mais il faut que je passe une chaîne plutôt qu'un int aléatoire. J'ai également envisagé d'utiliser keys() pour retourner un tableau et lire à partir de ce tableau, mais cela irait à l'encontre du but car je ne lirais pas directement de Trove. Voici mon code:Obtention de lignes aléatoires à partir de Trove (TObjectIntHashMap)?
import java.io.IOException;
import java.util.List;
import java.util.Random;
import com.comScore.TokenizerTests.Methods.TokenizerUtilities;
import gnu.trove.TObjectIntHashMap;
public class Trove {
public static TObjectIntHashMap<String> lines = new TObjectIntHashMap<String>();
public static void TroveMethod(List<String> fileInArrayList)
throws IOException {
TObjectIntHashMap<String> lines = readToTrove(fileInArrayList);
TokenizerUtilities.writeOutTrove(lines);
}
public static TObjectIntHashMap<String> readToTrove(
List<String> fileInArrayList) {
int lineCount = 0;
for (int i = 0; i < fileInArrayList.size(); i++) {
lines.adjustOrPutValue(fileInArrayList.get(i), 1, 1);
lineCount++;
}
TokenizerUtilities.setUrlInput(lineCount);
return lines;
}
public static void loadRandomMapEntries() {
Random rnd = new Random(lines.size());
int loadCount = 10000;
for (int i = 0; i < loadCount; i++) {
lines.get(rnd);
}
TokenizerUtilities.setLoadCount(loadCount);
}
}
La méthode en question est loadRandomMapEntries(), en particulier la boucle for. Toute aide est appréciée. Merci!
Merci pour la réponse rapide! J'ai fait les étapes 1 et 2, mais je n'arrive pas à trouver comment rechercher la clé en utilisant la valeur. Je suis tombé sur votre autre réponse [ici] (http://stackoverflow.com/questions/26120131/tintobjecthashmap-get-key-for-given-value). Cependant, lorsque vous faites ce même code exact, je reçois une autre erreur sous forEachEntry: "La méthode forEachEntry (TObjectIntProcedure) dans le type TObjectIntHashMap n'est pas applicable pour les arguments (nouveau TIntObjectProcedure () {})" Do vous savez pourquoi cela pourrait être? Merci encore, Rob! –
TLe
Content de vous aider! Votre "Objet" et "Int" sont inversés dans votre question. Je ne suis pas sûr si c'est une faute de frappe ou le vrai problème. [Voici le code] (http://pastebin.com/pYQnbkkE) qui effectue les recherches de clé. J'espère que cela aide! –