Duplicate topic has been deleted
Al Davis wrote:I know that HashMaps can't be sorted using the Collections.sort methods, but the problem specified the map structure I've posted ( FilmComparator(Map<Film, List<Rating>> ratings) ) and I'm stuck with it.
Henry Wong wrote:The problem specified that you need to use a Map ... but where does it say that you have to use a HashMap? Why can't you use a Map type that can be sorted?
There are three kinds of actuaries: those who can count, and those who can't.
There are three kinds of actuaries: those who can count, and those who can't.
That is strange too. It is not usual for a Comparator to have any fields. It is usually implemented as a class with one method (compare(T, T)). I can see how you might want a class that will sort your Films, but that isn't the usual use of a Comparator<Film>. I think, maybe you should query the requirements with whoever gave you them.In your first post, you wrote:The class FilmComparator has to implement the interface Comparator<Film>, and it has to have the constructor public FilmComparator(Map<Film, List<Rating>> ratings).
There are three kinds of actuaries: those who can count, and those who can't.
That is my idea of how you use a Comparator. So why pass a Map to its constructor?Piet Souris wrote:. . . come up with a class that implements a Comparator<Film> . . .
films.sort(comp).
Campbell Ritchie wrote:I was thinking the idea of the Map passed to the constructor was simply to provide access to the Rating lists.
Presumably it would be all right to take all the films out of a hash map and use those averages to sort it into a tree map (or similar)?
But what is going to happen if you take the Films out of the Map and concurrently scores are added to a film which later alter the sorting?
That is what I expected; it sounds a bad idea all round. Once that undefined behaviour, which I think I can construe as “incorrect ordering,” starts, the correct performance of such a program is doomed. whether single‑lthreaded or concurrent.Stephan van Hulst wrote:. . . Once you alter the values of the map, the content of your TreeMap will be completely undefined if it uses a comparator based on values of another map.
There are three kinds of actuaries: those who can count, and those who can't.
Piet Souris wrote:Lastly but one: if the ratings map gets updated, it is then simply a matter of creating a new instance of the FilmComparator, or you could give that class a method like 'setNewMap'.
There are three kinds of actuaries: those who can count, and those who can't.
There are three kinds of actuaries: those who can count, and those who can't.
There are three kinds of actuaries: those who can count, and those who can't.
All things are lawful, but not all things are profitable.
All things are lawful, but not all things are profitable.
All things are lawful, but not all things are profitable.
There's a way to do it better - find it. -Edison. A better tiny ad:
a bit of art, as a gift, the permaculture playing cards
https://gardener-gift.com
|