A tady je poslední sada správných odpovědí na třetí a poslední zkoušku Mistra. Jak se vám dařilo? Odpověděli jste správně?

Správné odpovědi na třetí zkoušku

Hvězda smrti se blíží k planetě, na které je ukrytá základna rebelů. Pouze ty ji dokáže zastavit předtím, než zničí tuto planetu. Předtím, než se pustíš do akce, musíš rozluštit záhadu metody compareDates. Jak vidíš, situace není jednoduchá. Šéf programátor rebelů vymyslel nepřehledný algoritmus, který ti má ztížit práci. Pusť se do toho!



public class StarDateComparator {

public static void main(String[] args) {
Date dateOfDeathStartIsDestroyed = new Date();
Date dateOfTheDeathStarDestroysThePlanet = dateOfDeathStartIsDestroyed;

boolean areTheSame = compareDates(dateOfDeathStartIsDestroyed, dateOfTheDeathStarDestroysThePlanet);
System.out.println("Dates are the same: " + areTheSame);
}

public static boolean compareDates(Date date1, Date date2) {
return compareSets(getDateSet(date1), getDateSetTwo(date2)) == compareSets(getDateSetTwo(date1), getDateSet(date2));
}

private static boolean compareSets(Set<object> set1, Set<object> set2) {
for (Object o1 : set1) {
for (Object o2 : set2) {
if (!o1.equals(o2)) {
return false;
}
}
}
return true;
}

private static Set<object> getDateSet(Date date) {
Set<object> resultSet = new HashSet<>();
resultSet.add(new Timestamp(date.getTime()));
resultSet.add(date);
return resultSet;
}

private static Set<object> getDateSetTwo(Date date) {
Set<object> resultSet = new HashSet<>();
resultSet.add(date);
resultSet.add(new Timestamp(date.getTime()));
return resultSet;
}
}


 

Odpovědi

  1. Metoda compareDates(Date date1, Date date2) vrátí false, protože v ní porovnáváme 2 Sety u nichž neodpovídá pořadí prvků. error
  2. Metoda compareDates(Date date1, Date date2) vrátí false, protože implementace metody equals() ve třídě Date a Timestamp nejsou vzájemně symetrické. check
  3. Metoda compareDates(Date date1, Date date2) vrátí true, protože date1 == date2. error
  4. Metoda compareDates(Date date1, Date date2) vrátí false pouze tehdy, pokud date1.equals(date2). check
  5. Metoda compareDates(Date date1, Date date2) vrátí false, protože porovnáváme 2 sety s nestejným počtem prvků. error
  6. Šéf programátor rebelů by měl použít Joda-Time. check

Chceš dál rozvíjet svoji sílu?

Pokud ano, vždy rádi přivítáme výjimečné kluky a holky do našich týmů v Brně, Hradci Králové, Praze, Bratislavě i na home office. Umožníme ti rozvinout tvou sílu k dokonalosti! Jak? Příjď na excelentní kafe a můžeme to probrat.

Jsem k dispozici na mistrjavy@morosystems.cz.

Pokud už víš, že s námi do toho chceš jít, tak do týmu hledáme skvělého Technical Leadera do Brna nebo špičkového Senior Java Developera do Hradce Králové. Šikovný Java Developer má u nás dveře vždy otevřené!

U nás v MoroSystems je skvělá parta a parádní projekty. Navíc je u nás zcela standardní možnost pracovat z home-office nebo vzdáleně. Neváhej se nám ozvat. Skvělí lidé u nás mají dveře otevřené.

Image00052

 

 

Share on Facebook0Share on Google+7Tweet about this on TwitterShare on LinkedIn5Email this to someone