Hi,
ich hab ein Problem mit dem Sortieren einer Hashmap über ein TreeSet.
Meine HashMap besteht aus einem Objekt Superplayer, und einer zufällig erzeugten IntegerZahl.
Nach füllen der Hashmap soll diese Hashmap nun ordnungsgemäß sortiert werden, und zwar absteigend anhand des HashMap-Values.
Das ganze funktioniert eigentlich. Allerdings gibt es ein Problem, so bald in der ersten Hashmaps zwei SuperPlayer zufällig die selbe Integer Zahl zugeordnet bekamen. int size = sortedArray.length ist dann nämlich 4 und nicht 5. Bei 5 gleichen Zahlen wäre die Size 1.
Als Grundlage für diesen Code diente: Sort an HashMap - Real's Java How-to dieses Beispiel hier.
Es soll natürlich so sein, dass alle Fünf Superplayer anhand der Integer Zahlen sortiert werden, er lässt aber diejenigen Superplayer zahlen, welche eine identische Integer-Zahl haben, außen vor und nimmt nur einen von ihnen.
Kann mir jemand helfen ?
ich hab ein Problem mit dem Sortieren einer Hashmap über ein TreeSet.
Meine HashMap besteht aus einem Objekt Superplayer, und einer zufällig erzeugten IntegerZahl.
Java:
Map<SuperPlayer, Integer> hMap = new HashMap<SuperPlayer, Integer>();
for (int i = 0; i < 5; i ++) {
int val = Zufall.getZufall(100) // liefert eine zufällige Zahl von 0 - 100 zurück
hMap.put( (SuperPlayer) data.getVecPlayer().elementAt( i ), new Integer( val ) );
}
Nach füllen der Hashmap soll diese Hashmap nun ordnungsgemäß sortiert werden, und zwar absteigend anhand des HashMap-Values.
Java:
HashMap map = new LinkedHashMap();
List yourMapKeys = new ArrayList( hMap.keySet() );
List yourMapValues = new ArrayList( hMap.values() );
TreeSet sortedSet = new TreeSet( yourMapValues );
Object[] sortedArray = sortedSet.toArray();
int size = sortedArray.length;
System.out.println("SIZE:" + size);
// Sortieren der HashMap in das TreeSet (DESCENDING !!!!)
for ( int i = size; i > 0; )
{
map.put( yourMapKeys.get( yourMapValues.indexOf( sortedArray[--i] ) ), sortedArray[i] );
}
Das ganze funktioniert eigentlich. Allerdings gibt es ein Problem, so bald in der ersten Hashmaps zwei SuperPlayer zufällig die selbe Integer Zahl zugeordnet bekamen. int size = sortedArray.length ist dann nämlich 4 und nicht 5. Bei 5 gleichen Zahlen wäre die Size 1.
Als Grundlage für diesen Code diente: Sort an HashMap - Real's Java How-to dieses Beispiel hier.
Es soll natürlich so sein, dass alle Fünf Superplayer anhand der Integer Zahlen sortiert werden, er lässt aber diejenigen Superplayer zahlen, welche eine identische Integer-Zahl haben, außen vor und nimmt nur einen von ihnen.
Kann mir jemand helfen ?