Получение случайных строк из Trove (TObjectIntHashMap)?

Есть ли способ получить случайные строки из Trove (TObjectIntHashMap)? Я использую Random, чтобы проверить, насколько быстро Trove может искать / загружать 10000 строк. В частности, я хотел бы передать случайное целое число и иметь поиск / загрузку 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 ответ

Решение

Я мог бы:

  1. Создайте массив значений, которые вы хотите вставить.
  2. Переберите массив и вставьте эти ключи.
  3. Выберите случайный индекс из массива и выполните поиск этого ключа.

В комплекте с Trove есть тесты, которые по сути уже это делают, так что вы можете взглянуть на них.

Имейте в виду, что сравнительный анализ сложно сделать правильно. Я бы порекомендовал вам использовать такую ​​среду, как JMH, для тестирования производительности и обязательно всегда тестировать в своем приложении, чтобы увидеть реальную производительность.

Другие вопросы по тегам