Сама программа отрабатывает и выдает "тест пройден", а вот валидатор ругается, что превышено время ожидания. Если убрать цикл с получением рандомных строк, валидатор начинает выдавать хоть какие-то результаты
package com.javarush.task.task33.task3310;
import com.javarush.task.task33.task3310.strategy.HashMapStorageStrategy;
import com.javarush.task.task33.task3310.strategy.StorageStrategy;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
public class Solution {
public static void main(String[] args) {
testStrategy(new HashMapStorageStrategy(), 10000);
}
public static Set<Long> getIds(Shortener shortener, Set<String> strings){
Set<Long> result = new HashSet<>();
for(String str : strings){
result.add(shortener.getId(str));
}
return result;
}
public static Set<String> getStrings(Shortener shortener, Set<Long> keys){
HashSet<String> result = new HashSet<>();
for(Long key : keys){
result.add(shortener.getString(key));
}
return result;
}
public static void testStrategy(StorageStrategy strategy, long elementsNumber){
// if(elementsNumber <= 0 || strategy == null){
// throw new IllegalArgumentException();
// }
System.out.println(strategy.getClass().getSimpleName());
HashSet<String> testStrings = new HashSet<>();
for(long i = 0; i < elementsNumber; i++){
if(!testStrings.add(Helper.generateRandomString())){
i--;
}
}
Shortener shortener = new Shortener(strategy);
long startTime = new Date().getTime();
Set<Long> ids = getIds(shortener, testStrings);
long endTime = new Date().getTime();
Helper.printMessage("" + (endTime - startTime));
startTime = new Date().getTime();
Set<String> compareSet = getStrings(shortener, ids);
endTime = new Date().getTime();
Helper.printMessage("" + (endTime - startTime));
if(compareSet.equals(testStrings)){
Helper.printMessage("Тест пройден.");
} else {
Helper.printMessage("Тест не пройден.");
}
}
}