Все работает. Валидатор пишет:
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.Collections;
import java.util.Date;
import java.util.HashSet;
import java.util.Set;
/*
6.2. Äîáàâü â êëàññ Solution ðåàëèçàöèè âñïîìîãàòåëüíûõ ñòàòè÷åñêèõ ìåòîäîâ:
6.2.1. Set<Long> getIds(Shortener shortener, Set<String> strings). Ýòîò ìåòîä äîëæåí äëÿ
ïåðåäàííîãî ìíîæåñòâà ñòðîê âîçâðàùàòü ìíîæåñòâî èäåíòèôèêàòîðîâ.
Èäåíòèôèêàòîð äëÿ êàæäîé îòäåëüíîé ñòðîêè íóæíî ïîëó÷èòü, èñïîëüçóÿ shortener.
6.2.2. Set<String> getStrings(Shortener shortener, Set<Long> keys).
Ìåòîä áóäåò âîçâðàùàòü ìíîæåñòâî ñòðîê, êîòîðîå ñîîòâåòñòâóåò ïåðåäàííîìó ìíîæåñòâó èäåíòèôèêàòîðîâ.
Ïðè ðåàëüíîì èñïîëüçîâàíèè Shortener, çàäà÷à ïîëó÷èòü èç ìíîæåñòâà ñòðîê ìíîæåñòâî èäåíòèôèêàòîðîâ
è íàîáîðîò ñêîðåå âñåãî íå âñòðåòèòñÿ, ýòî íóæíî èñêëþ÷èòåëüíî äëÿ òåñòèðîâàíèÿ.
6.2.3. testStrategy(StorageStrategy strategy, long elementsNumber). Ìåòîä áóäåò òåñòèðîâàòü
ðàáîòó ïåðåäàííîé ñòðàòåãèè íà îïðåäåëåííîì êîëè÷åñòâå ýëåìåíòîâ elementsNumber.
Ðåàëèçàöèÿ ìåòîäà äîëæíà:
6.2.3.1. Âûâîäèòü èìÿ êëàññà ñòðàòåãèè. Èìÿ íå äîëæíî âêëþ÷àòü èìÿ ïàêåòà.
6.2.3.2. Ãåíåðèðîâàòü òåñòîâîå ìíîæåñòâî ñòðîê, èñïîëüçóÿ Helper è çàäàííîå êîëè÷åñòâî
ýëåìåíòîâ elementsNumber.
6.2.3.3. Ñîçäàâàòü îáúåêò òèïà Shortener, èñïîëüçóÿ ïåðåäàííóþ ñòðàòåãèþ.
6.2.3.4. Çàìåðÿòü è âûâîäèòü âðåìÿ íåîáõîäèìîå äëÿ îòðàáîòêè ìåòîäà getIds äëÿ
çàäàííîé ñòðàòåãèè è çàäàííîãî ìíîæåñòâà ýëåìåíòîâ. Âðåìÿ âûâåñòè â ìèëëèñåêóíäàõ.
Ïðè çàìåðå âðåìåíè ðàáîòû ìåòîäà ìîæíî ïðåíåáðå÷ü ïåðåêëþ÷åíèåì ïðîöåññîðà íà äðóãèå ïîòîêè,
âðåìåíåì, êîòîðîå òðàòèòñÿ íà ñàì âûçîâ, âîçâðàò çíà÷åíèé è âûçîâ ìåòîäîâ ïîëó÷åíèÿ âðåìåíè (äàòû).
Çàìåð âðåìåíè ïðîèçâåäè ñ èñïîëüçîâàíèåì îáúåêòîâ òèïà Date.
6.2.3.5. Çàìåðÿòü è âûâîäèòü âðåìÿ íåîáõîäèìîå äëÿ îòðàáîòêè ìåòîäà getStrings äëÿ çàäàííîé
ñòðàòåãèè è ïîëó÷åííîãî â ïðåäûäóùåì ïóíêòå ìíîæåñòâà èäåíòèôèêàòîðîâ.
6.2.3.6. Ñðàâíèâàòü îäèíàêîâîå ëè ñîäåðæèìîå ìíîæåñòâà ñòðîê, êîòîðîå áûëî ñãåíåðèðîâàíî
è ìíîæåñòâà, êîòîðîå áûëî âîçâðàùåíî ìåòîäîì getStrings. Åñëè ìíîæåñòâà îäèíàêîâû,
òî âûâåäè "Òåñò ïðîéäåí.", èíà÷å "Òåñò íå ïðîéäåí.".
6.2.4. Äîáàâü ìåòîä main(). Âíóòðè ìåòîäà ïðîòåñòèðóé ñòðàòåãèþ HashMapStorageStrategy ñ
ïîìîùüþ 10000 ýëåìåíòîâ.
6.3. Ïðîâåðü, ÷òî ïðîãðàììà ðàáîòàåò è òåñò ïðîéäåí.
*/
public class Solution {
//Ýòîò ìåòîä äîëæåí äëÿ ïåðåäàííîãî ìíîæåñòâà ñòðîê âîçâðàùàòü ìíîæåñòâî èäåíòèôèêàòîðîâ
public static Set<Long> getIds(Shortener shortener, Set<String> strings) {
Set<Long> resultSet = new HashSet<>();
for (String s : strings) {
resultSet.add(shortener.getId(s));
}
return resultSet;
}
//Ìåòîä áóäåò âîçâðàùàòü ìíîæåñòâî ñòðîê, êîòîðîå ñîîòâåòñòâóåò ïåðåäàííîìó ìíîæåñòâó èäåíòèôèêàòîðîâ.
public static Set<String> getStrings(Shortener shortener, Set<Long> keys) {
Set<String> resultSet = new HashSet<>();
for (Long l : keys) {
resultSet.add(shortener.getString(l));
}
return resultSet;
}
//Ìåòîä áóäåò òåñòèðîâàòü ðàáîòó ïåðåäàííîé ñòðàòåãèè íà îïðåäåëåííîì êîëè÷åñòâå
public static void testStrategy(StorageStrategy strategy, long elementsNumber) {
//Âûâîäèòü èìÿ êëàññà ñòðàòåãèè. Èìÿ íå äîëæíî âêëþ÷àòü èìÿ ïàêåòà
Helper.printMessage(strategy.getClass().getSimpleName());
//Ãåíåðèðîâàòü òåñòîâîå ìíîæåñòâî ñòðîê, èñïîëüçóÿ Helper è çàäàííîå êîëè÷åñòâî ýëåìåíòîâ elementsNumber
Set<String> testSetStrings = new HashSet<>();
for (int i = 0; i < elementsNumber; i++) {
testSetStrings.add(Helper.generateRandomString());
}
//Ñîçäàâàòü îáúåêò òèïà Shortener, èñïîëüçóÿ ïåðåäàííóþ ñòðàòåãèþ
Shortener shortener = new Shortener(strategy);
//Çàìåðÿòü è âûâîäèòü âðåìÿ íåîáõîäèìîå äëÿ îòðàáîòêè ìåòîäà getIds äëÿ çàäàííîé ñòðàòåãèè è çàäàííîãî ìíîæåñòâà ýëåìåíòîâ
//Âðåìÿ âûâåñòè â ìèëëèñåêóíäàõ. Ïðè çàìåðå âðåìåíè ðàáîòû ìåòîäà ìîæíî ïðåíåáðå÷ü ïåðåêëþ÷åíèåì ïðîöåññîðà íà äðóãèå ïîòîêè,
// âðåìåíåì, êîòîðîå òðàòèòñÿ íà ñàì âûçîâ, âîçâðàò çíà÷åíèé è âûçîâ ìåòîäîâ ïîëó÷åíèÿ âðåìåíè (äàòû).
// Çàìåð âðåìåíè ïðîèçâåäè ñ èñïîëüçîâàíèåì îáúåêòîâ òèïà Date.
Set<Long> idsSet;
Date startTime1 = new Date();
idsSet = getIds(shortener, testSetStrings);
Date finishTime1 = new Date();
long msDelay1 = finishTime1.getTime() - startTime1.getTime();
Helper.printMessage(Long.toString(msDelay1));
//Çàìåðÿòü è âûâîäèòü âðåìÿ íåîáõîäèìîå äëÿ îòðàáîòêè ìåòîäà getStrings äëÿ çàäàííîé ñòðàòåãèè è
//ïîëó÷åííîãî â ïðåäûäóùåì ïóíêòå ìíîæåñòâà èäåíòèôèêàòîðîâ.
Set<String> stringSet;
Date startTime2 = new Date();
stringSet = getStrings(shortener, idsSet);
Date finishTime2 = new Date();
long msDelay2 = finishTime2.getTime() - startTime2.getTime();
Helper.printMessage(Long.toString(msDelay2));
//Ñðàâíèâàòü îäèíàêîâîå ëè ñîäåðæèìîå ìíîæåñòâà ñòðîê, êîòîðîå áûëî ñãåíåðèðîâàíî
// è ìíîæåñòâà, êîòîðîå áûëî âîçâðàùåíî ìåòîäîì getStrings.
// Åñëè ìíîæåñòâà îäèíàêîâû, òî âûâåäè "Òåñò ïðîéäåí.", èíà÷å "Òåñò íå ïðîéäåí.".
if (testSetStrings.size() == stringSet.size()) {
Helper.printMessage("Òåñò ïðîéäåí.");
} else {
Helper.printMessage("Òåñò íå ïðîéäåí.");
}
}
public static void main(String[] args) {
StorageStrategy strategy = new HashMapStorageStrategy();
testStrategy(strategy, 10000);
//testStrategy(new HashMapStorageStrategy(),10000);
// System.out.println(Helper.generateRandomString());
//Date currentTime = new Date();
//System.out.println(currentTime);
}
}