Lista, Tablica, Mapa

0

Witam,

Nie rozumiem sensu, tego urywka kodu poniżej, przyjmijmy, że pierwsze dwa wiersze "instancje" to:
[test1][test2][test3]
[test4][test5][test3]
Zaś "maxIG" to "2".
Jak ja to rozumiem:
Czyli w pierwszej pętli wartość to będzie "test3". Następnie do "listaInstancji" przypisujemy wartość "null" (no bo nic tam nie ma, dopiero co to utworzyliśmy). Wykona się if, co spowoduje wykonanie tej instr. "

listaInstancji = new ArrayList<String[]>();

" - czy ona nie powinna być na początku ? potem do "podzial" dodamy "test3" oraz ?listęInstancji, do w/w listy dodamy całą linijkę - "kolejno "test1" "test2" oraz "test3" " po czym weźmiemy kolejną linię - " test4 test5 test3 " i ustawimy wartość na "test3" i do listaInstancji przypiszemy "test3" pominiemy if dodając tylko do "listaInstancji" drugą linię: "test4 test5 test3" ...
Coś tu jest nie tak, mógłby ktoś mi wyjaśnić o co w tym chodzi ?

		
Map<String, List<String[]>> podzial= new HashMap<String, List<String[]>>();
		for (String[] instancja : instancje) {
			String wartosc = instancja[maxIG];
			List<String[]> listaInstancji = podzial.get(wartosc);
			if (listaInstancji == null) {
				listaInstancji = new ArrayList<String[]>();
				podzial.put(wartosc, listaInstancji);
			}
			listaInstancji.add(instancja);
		}
0

Kod jest z czapy. Jedyne co robi to wkłada do HashMapy 'podział' jednoelementowe listy. 'lista instancji' jest tu w ogóle niepotrzebna bo przy każdej iteracji tworzony jest nowy obiekt i przypisywany do tej referencji. Ponadto występuje tutaj mylące nazewnictwo: "podzial.put(wartosc, listaInstancji)" jest nieco niefortunnym zestawieniem bo put przyjmuje argumenty: 'klucz', 'wartość', w tej kolejności.

0

To ja może rozwinę temat dalej, jeżeli wciąż będzie kolega chętny pomóc to na pewno będzie to lepiej czytelne. To jest cały kod: http://hackystat-ui-trajectory.googlecode.com/svn-history/r857/trunk/android-loader/src/ca/pfv/spmf/decisiontree/id3/AlgoID3.java
Wkleić w przeglądarkę: "// Split the dataset into partitions according to the selected attribute"
I będzie fragment którego sens mnie zastanawia a za którego wytłumaczenie będę bardzo wdzięczny.
'Instances' to(attributeWithHighestGain ma wartość "2"):
play outlook temp humid wind
no sunny hot high weak
no sunny hot high strong
yes overcast hot high weak
yes rain mild high weak
yes rain cool normal weak
no rain cool normal strong
yes overcast mild high strong
no sunny mild high weak
yes sunny cool normal weak
yes rain mild normal weak
yes sunny mild normal strong
yes overcast hot normal weak
yes overcast cool normal strong
no rain mild high strong

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