]Java] java.util.Map - ClassCastException

0

Witam wszystkich, pisze rozwiązanie cwie=czenia z książki Thinking in Java ed 3 i zaciełem sie okrutnie na rozdziale kontenerów. Niby wszystko jest fajnie wyjaśnione ale uważam temat Map został potraktowany troszke po macoszemu (albo ja taki lewy jestem :)). W kazdym razie mam zamieścic klase np Klasa1 w odwzorowaniu Map i kojarząc imie jako klucz dla kazdego obiektu tej klasy (wartosc). Potem mam pobrac iterator zastosowac keySet i wyswietlic to wszystko metoda hop. Napisalem cos takiego ale nie do konca :

1 - chyba zle zrozumialem temat, dla uproszczenia zadania klucze dałem jako zwykła tablice int
2 - bardzo pe=rosze kogos o wskazanie błędów w kodzie (ew. poprawienie) i napisanie paru zdan komenta co z czym sie je :D oto kod:

 
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

interface Pary{
	Gebril next();
}

class Gebril{
	private int gebrilNumber;
	private String nameKey;
	
	public Gebril(int i){
		gebrilNumber =  i;
		//nameKey =  s;
	}
	
	public int getNumber(){
		return gebrilNumber;
	}
	
	public static void hop(Object s){
		Gebril geb = (Gebril)s;
		System.out.println("Homik nr: " + geb.getNumber()
				+ " ,ten stworek skacze."); 
	}
	
	public String toString(){
		return "Gebryl nr " + gebrilNumber;
	}
	
	//chciałem automatycznie  zapełniac mape ale zaniechalem pomysłu
	public static void fill(Map m, ArrayList gebryle, int count){
		for(int i = 0; i < count;i++){
			Gebril g =  (Gebril) ((Pary) gebryle).next();
			m.put(g.gebrilNumber, g.nameKey);
		}
	}
	
	
	public static void main(String[] args){
		
	Map m = new HashMap<Integer,Integer>();
		
	ArrayList gebryle = new ArrayList();
		
		for(int i = 0; i < 2; i++){
			gebryle.add(new Gebril(i));
		}
	
		
	int[] klucze = {1,2,3};
	
	for(int i = 0; i < gebryle.size();i++){
		m.put(klucze[i], gebryle.get(i));
	}
	
	
	//System.out.println(m.get(1));   działa na pojedynczych 
	
	
	Iterator i = m.keySet().iterator();
	while(i.hasNext()){
		Gebril g =  ((Pary) gebryle).next();
		System.out.println(m.get(g));
	}
	}

}

0

itam, temat zamkniety :) jednak ta dokumentacja SUN czasami sie przydaje, w przykładzie źle zaimplementowany był iterator głównie keySet().

0

Mała poprawka, dokumentacja SUN zawsze się przydaje.

0

Nie zawsze !
Widac , nie miales jeszcze problemow, ktore nie byly udokumentowane.

Dobrze sprawdza sie dekompilacja i debugowanie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1