从Trove (TObjectIntHashMap)获得随机行



是否有办法从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循环。任何帮助都是感激的。谢谢!

我想:

  1. 创建要插入的值的数组。
  2. 遍历数组并插入这些键。
  3. 从数组中选择一个随机索引并查找该键。

与Trove捆绑在一起的基准测试基本上已经做到了这一点,所以你可以看看这些。

请记住,要正确地进行基准测试是很棘手的。我建议您使用JMH这样的框架进行基准测试,并确保始终在应用程序中进行测试,以查看实际性能。

相关内容

  • 没有找到相关文章

最新更新