Trove (TObjectIntHashMap) からランダムな行を取得する方法はありますか? Random を使用して、Trove が 10,000 行をシーク/ロードできる速さをテストしています。具体的には、ランダムな整数を渡して、Trove にその行をシーク/ロードさせたいと考えています。get() メソッドを使用してみましたが、ランダムな int ではなく文字列を渡す必要があります。また、keys() を使用して配列を返し、その配列から読み取ることも検討しましたが、Trove から直接読み取らないため、目的が無効になります。これが私のコードです:
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);
}
}
問題のメソッドは loadRandomMapEntries()、具体的には for ループです。どんな助けでも大歓迎です。ありがとう!