I have implemented following classes:
public class Team
- has a SortedMap<String, Player>
as field.
public class Player implements Comparator
- has the method int compare(Object o1, Object o2)
Now, I want to have the Map
always sorted when putting in String, Player
.
How can I realize that, because the Comparator
must work with the value V
and not with the key K
. However, there is only a constructor with a Comparator
of the key.
Thanks!
public class Player implements Comparator
@Override
public int compare(Object o1, Object o2) {
if(o1.getClass() != o2.getClass()) return 0;
if(((int)((Player)o1).getName().charAt(0)) == ((int)((Player)o2).getName().charAt(0))) {
if(((Player)o1).getNumber() == ((Player)o2).getNumber()) {
return 0;
} else if(((Player)o1).getNumber() < ((Player)o2).getNumber()) return -1;
else return 1;
} else if(((int)((Player)o1).getName().charAt(0)) < ((int)((Player)o2).getName().charAt(0))) {
return -1;
} else return 1;
}
The Team class:
public class Team {
private SortedMap<String,Player> team;
/**
* This is the default constructor without parameters. It initializes the team Map
*/
public Team() {
team = new TreeMap(new Player(null, 0, 0));
}
/**
* This method adds a new Player to the team-Map
* @param player is the player to add to the team-Map
*/
public void put(Player player) {
if(player != null) {
String name = player.getName();
team.put(name, player);
}
}