Moin Moin!
Ich möchte eine TreeMap rückwärts durchlaufen. Dafür schreibe ich die Schlüssel meiner TreeMap in ein Array und durchlaufe dieses dann rückwärts. Die Schlüssel sind bei mir vom Typ Integer. Da ich mit diesen Schlüsseln auch noch rechnen möchte, brauche ich sie auch als Integer. Aber
gibt nur ein Object-Array zurück und ich bekomme es nicht zurück gecastet.
Wie bekomme ich meine Schlüssel als Integer, hat jemand eine Idee?
So wie der Code ist bekomme ich für Zeile 28 folgende Fehlermeldung:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;
Ich möchte eine TreeMap rückwärts durchlaufen. Dafür schreibe ich die Schlüssel meiner TreeMap in ein Array und durchlaufe dieses dann rückwärts. Die Schlüssel sind bei mir vom Typ Integer. Da ich mit diesen Schlüsseln auch noch rechnen möchte, brauche ich sie auch als Integer. Aber
Code:
map.keySet().toArray()
Wie bekomme ich meine Schlüssel als Integer, hat jemand eine Idee?
So wie der Code ist bekomme ich für Zeile 28 folgende Fehlermeldung:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;
Java:
public class TreeMapTest {
private TreeMap<Integer, String> map;
public TreeMapTest() {
map = new TreeMap<Integer, String>();
map.put(201111, "Apfel");
map.put(201110, "Birne");
map.put(201110, "Apfelsine");
map.put(201109, "Kiwi");
map.put(201108, "Weintraube");
map.put(201107, "Limette");
map.put(201106, "Clementine");
map.put(201105, "Melone");
map.put(201104, "Heidelbeere");
map.put(201103, "Erdbeere");
map.put(201102, "Himbeere");
map.put(201101, "Zitrone");
map.put(201052, "Mango");
map.put(201051, "Pfirsich");
map.put(201050, "Aprikose");
}
public void backwardByKeyAndArray(int comp) {
Integer[] keys = (Integer[]) map.keySet().toArray();
int key2 = keys.length - comp;
for(int i = keys.length - 1; i >= 0; i--) {
int key = keys[i];
System.out.println( i + " -> " + key + " -> " + getWeeks(key, key2) + " -> " + map.get(key));
}
}
public static void main(String[] args) {
TreeMapTest test = new TreeMapTest();
long time, diff;
time = System.nanoTime();
test.backwardByKeyAndArray(9);
diff = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - time);
System.out.println("Zeit = " + diff);
}
public int getWeeks(int t1, int t2) {
return t2 - t1;
}
}