Кога учихме сравняване на обекти с 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-а съм разменил местата на обектите, не знам защо)
Той въпросът ти е риторичен, но все пак и аз да се изкажа!
Не сме учили за Comparator в този курс.
Това не е проблем по принцип, най-малкото защото задачата, която даваш като пример за използване на Comparator, е от предишно издание на курса, а доколкото знам нивото в новите версии на курсовете е нарочно занижено, т.е. някои неща се въвеждат по-късно в курса.
Мен лично повече ме притеснява това, че "учихме" важни неща, които всъщност бяха много слабо покрити по време на занятията и се налагаше да попълвам пробойните от други източници. Не очаквам да науча всичко от няколко лекции и упражнения, но определено има какво да се желае.
Успех утре на изпита и дано да случим на по-качествени занятия в следващото ниво!
Дано, и повече старание с judge, защото губи много време и нерви понякога
Честито ви сортиране на LinkedHashSet от клас обект, написан в същия клас на main метода за да може да мине в Judge. Awe!
Предполагам, говориш за 3-та задача?
Може ли да ти видя решението?
Аз използвах TreeSet<String> за Followers, а влогърите ги сортирам в stream по custom comparator: линк
Не успях да я реша, защото се забих да я решавам без клас. После като прочетох по-внимателно че има сортиране по 2 критерия се сетих, че няма да стане с 2 мапа и тепърва тръгнах да сменям решението. Не можах да напиша компаратора и така. Приемам, че съм тъп и не съм си научил добре.
Гледам презентациите виждам на две места сортираме, чрез сравняване с compareTo:
P.S.: Не е нужно компараторът да ти е отвън, може да си е в сортиращата функция (както е в презентациите).
Аз не използвах Comparator, а просто lambda функция в strea().sorted() и въпреки, че изглежда сложно - не е. Такива учихме и се обърна също достатъчно внимание (според мен). Ето решение на 3та задача от изпита вчера: https://pastebin.com/E91Q0jsF
Аз примери намерих колкото щеш. Проблема е, че си плащам да ме научат а не за да си чета сам в stackoverflow щото там става и без да си плащам.
Друг основен въпрос остава дали всички за разбрали същността на compare функцията, какво приема и какво се случва с върнатия резултат?
Лично аз задачата 04. Log Parser от Java Fundamentals - 15 November 2015
https://judge.softuni.bg/Contests/Practice/Index/134#3
не можах да я реша.
И двете предложени решения са с Compare функции които не са ми по силите, а с риск да прозвучи високомерно се смятам за един от можещите студенти в групата. Стриктно посещавам упражненията и си си решавам задачите с максималните точки.
Искрено се надявам задачата с мапове на утрешния изпит да няма подобно сортиране.
Тва е!
Аре стига съм ревал, успех на всички утре!
Ето моето решение - може и да ти помогне в някаква степен.
Наистина, задачата не е кой-знае колко трудна, стига да умееш да използваш компаратори (без тях решението ще е доста по-сложно).