Кога учихме сравняване на обекти с Comparator
Здравейте колеги,
Може ли някой да ми припомни кога учихме за сравняване на обекти и за сортиране на мапове, защото не си спомням да съм писал компаратор фунции и ми е трудно.
Здравейте колеги,
Може ли някой да ми припомни кога учихме за сравняване на обекти и за сортиране на мапове, защото не си спомням да съм писал компаратор фунции и ми е трудно.
Май не смего учили, но лекторите го използваха тук-таме за решаване на някой задачи, но не мога да ти кажа в кои лекций.
Но все пак ето един пример:
private static Comparator<Map.Entry<String, Player>> comp = ((o1, o2) -> {
long player1Score = o1.getValue().getHighscore();
long player2Score = o2.getValue().getHighscore();
if (player2Score > player1Score)
return 1;
if (player2Score < player1Score)
return -1;
else
return 0;
});
Общо взето ако искаш да си разменят местата връщаш 1, ако са равни - 0 и ако са подредени както трябва връщаш -1.
Ако не ти се занимава с връщане на числа, има функция compareTo ( o1.compareTo(o2) ), но за някой обекти май не работеше.
Но пък съм тествал, че ако не извикваш compareTo, а си връщаш числа в някой случай работи с 0.01ms по-бързо.
В този случай искам да са в нисходящ ред, затова щом втория обект е по-голям от първия, им разменям местата, връщам 1 (в if-а съм разменил местата на обектите, не знам защо)
Аз примери намерих колкото щеш. Проблема е, че си плащам да ме научат а не за да си чета сам в stackoverflow щото там става и без да си плащам.
Друг основен въпрос остава дали всички за разбрали същността на compare функцията, какво приема и какво се случва с върнатия резултат?
Лично аз задачата 04. Log Parser от Java Fundamentals - 15 November 2015
https://judge.softuni.bg/Contests/Practice/Index/134#3
не можах да я реша.
И двете предложени решения са с Compare функции които не са ми по силите, а с риск да прозвучи високомерно се смятам за един от можещите студенти в групата. Стриктно посещавам упражненията и си си решавам задачите с максималните точки.
Искрено се надявам задачата с мапове на утрешния изпит да няма подобно сортиране.
Тва е!
Аре стига съм ревал, успех на всички утре!
Ето моето решение - може и да ти помогне в някаква степен.
Наистина, задачата не е кой-знае колко трудна, стига да умееш да използваш компаратори (без тях решението ще е доста по-сложно).