HashMap Fehler - Set/Interator/Map.Entry

Hallo Leute,

ich schreib Hobby mässig ein wenig Java für einen Spiele Server. Nun wollte ich gerne etwas schreiben mit der Funktion HashMap, doch leider bekomme ich einige Fehlermeldungen. Zu den Fehlermeldungen finde ich leider nicht einmal über Google was wenn ich diese im google suche. Daher wollte ich nun mal hier nachfragen ob mir hier jemand vllt helfen kann um diese weg zu bekommen. Das script läuft zwar aber ist eben nicht sauber.

Hier mal die fehlermeldungen :
Code:
Meldung 1. :
Set is a raw type. References to generic type Set<E> should be parameterized.

Meldung 2. :
Iterator is a raw type. References to generic type Iterator<E> should be parameterized.

Meldung 3. :
Map.Entry is a raw type. References to generic type Map<K,V>.Entry<K,V> should be parameterized

Ich hab den Quellcode aus einem Beispiel genommen gehabt und an meinen angepasst. Doch leider funktioniert es nicht.

Hier mal der Quellcode ( Kurzform )
Java:
		Set one=_areaOneNpc.entrySet();
		Iterator oneone=one.iterator();

		while(oneone.hasNext())
		{
			Map.Entry m =(Map.Entry)oneone.next();
			L2Npc key=(L2Npc)m.getKey();
			key.deleteMe();
		}

Mit freundlichem Gruß
PapaHarni
 
Also so wie ich es aus dem Link von eRaaaa heraus lese. Soll man wirklich <E> bzw <K> und <K,V> schreiben.

Nun hab ich das gemacht und leider kommt die Error Meldung :
Code:
K cannot be resolved to a type
V cannot be resolved to a type

Also so wirklich komm ich da jetzt ned hinter wenn das nicht klappt.

Klar die fehlermeldung sagt mir das es den Type ned gibt.

Aber was soll ich für Typen einsetzen?

Bei
Java:
Map.Entry m =(Map.Entry)oneone.next();
klappt es leider auch nicht wenn ich so versuche :
Java:
Map<L2Npc, Integer>.Entry<L2Npc, Integer> m =(Map<L2Npc, Integer>.Entry<L2Npc, Integer>)oneone.next();

Selbst dabei kommen dann die meldungen :
Code:
The member type Map<L2Npc,Integer>.Entry cannot be qualified with a parameterized type, since it is static. Remove arguments from qualifying type Map<L2Npc,Integer>

Mit freundlichem Gruß
PapaHarni
 
hier einfach mal ein code mit generics von standardklassen. einfach so in browser getippt, also verlass dich nicht darauf, dass es compiliert 🙂

Java:
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "hallo");
map.put(2, "welt");

for (Entry<Integer, String> entry : map.entrySet())
     System.out.println(entry.getKey() + "\t" + entry.getValue());
 
Also nochmals Danke nrg, die for-schleife klappt voll und ganz. Und muss auch zugeben , ich find es mit der for-schleife besser als mit dem while.


Nun ein neues problem , mit sicherheit auch hier schon oft behandelt :

java.lang.NullPointerException

nur muss ich sagen das ich den Fehler nicht verstehe.
Dieser tritt bei einer get abfrage auf.

Zeile :
Java:
if ((Integer)_areaThrNpc.get(npc) > 0)
Wie kann da ein null fehler vorkommen?

Variable "npc" existiert und Variable _areaThrNpc ebenso. Und laut einigen Internet Such ergebnissen , kommt der fehler wenn eine Variable null ist.


Mit freundlichem Gruß
PapaHarni
 
Wie kann da ein null fehler vorkommen?

Z.B. wenn get(..) null liefert (also es keinen Eintrag zu dem Key gibt) in deinem Fall -->
Java:
System.out.println((Integer)null > 0);
//bzw so etwas wie
System.out.println(((Integer)null).intValue()); //passiert ja indirekt --> Boxing/Unboxing!

In manchen Map-Implementierungen aber z.B. auch wenn der Key null ist(bei Hashmap aber eig. nicht, aber das hattest du ja eh ausgeschloßen)

Was liefert dir denn
Java:
System.out.println(_areaThrNpc.get(npc)); // null ??
 
Zuletzt bearbeitet:

Zurück
Oben