Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo,
ich stehe gerade etwas auf dem Schlauch und habe zudem noch nicht viel mit Hashmaps gearbeitet. Wie kann ich denn aus einer Hashmap den höchsten Wert ausgeben. Das soll heißen, den höchsten Schlüssel, der als int gespeichert wird? Ist das irgendwie mögliche?
Hi, ja vielen Dank, du hast meine Gedankengänge genau erfasst, was ich genau damit bezwecken will, muss ich mir jetzt selbst nochmal überlegen, sollte ich auf eine Lösung kommen, werde ich natürlich gleich posten
abgesehen davon dass mein schnell dahin gehauhenes falsch ist... wer sagt dass man einen Iterator nicht mehr verwenden soll ??? in der API is nix von deprecated beim Iterator
Über das entrySet zu iterieren ist dann sinnvoll, wenn man sowohl die keys als auch values braucht, den so wird ein (überflüssiger) Lockup pro Iteration vermieden.
Oder einfach von vorne nach hinten durch die Keys laufen, und sich den höchsten merken - es muss ja nicht immer ein Einzeiler sein, wenn ein dreizeiler 100x schneller ist
import java.util.Date;
import java.util.HashMap;
import java.util.Map.Entry;
public class HashMapTest {
public static void main( String[] args ) {
HashMap<Integer, String> map = new HashMap<Integer, String>();
for ( int i=0; i < 1000; i++ ) {
map.put( i, "value"+i );
}
long before = new Date().getTime();
System.out.println( getHighestKey( map ) );
long after = new Date().getTime();
System.out.println( after-before + " ms" );
}
public static int getHighestKey( HashMap<Integer, String> map ) {
int value = 0;
for ( Entry<Integer, String> entry : map.entrySet() ) {
if ( entry.getKey() > value ) {
value = entry.getKey();
}
}
return value;
}
}
Bezüglich Performance: Bei mir am Laptop braucht getHighestKey() genau 2 Millisekunden (bei 1000 Einträgen).
So genau kann man das so einfach nicht messen. Lass' es 10 mal laufen, und du wirst sicher Abweichungen von mindestens 100% zu dem gemessenen Wert bekommen...
So genau kann man das so einfach nicht messen. Lass' es 10 mal laufen, und du wirst sicher Abweichungen von mindestens 100% zu dem gemessenen Wert bekommen...
Also ich persönlich würde daraus eien TreeMap machen, weil diese autromatisch nach dem Key sortiert, sprich, der höchste steht ganz am Ende. Und den letzten (sowie auch den ersten) Index kann man, ohne iterieren zu müssen, einfach abfragen
Ähnlich wie Landei schon gesagt hatte. Das Erstellen einer TreeMap benötigt aber O(nlogn), und das einfache Durchlaufen nur O(n). OK, meistens egal, aber es gibt ja auch Prinzipien
Mich würde viel eher interessieren, wie überhaupt die Elemente in die Map gelangt sind, denn möglicherweise hätte man schon beim Eintragen in die Map das größte Element rausfischen können.