簡體   English   中英

從Trove獲取隨機行(TObjectIntHashMap)?

[英]Getting random lines from Trove (TObjectIntHashMap)?

有沒有辦法從Trove(TObjectIntHashMap)獲取隨機行? 我正在使用隨機測試Trove可以搜索/加載10,000行的速度。 具體來說,我想傳入一個隨機整數並讓Trove查找/加載該行。 我嘗試使用get()方法,但是它要求我傳遞字符串而不是隨機整數。 我還考慮過使用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之類的框架進行基准測試,並確保始終在應用程序中進行測試以查看實際性能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM