Dziwny rozmiar Seta

Dziwny rozmiar Seta
0

Witam. Dopiero zaczynam nauke Javy i natknąłem się na dziwny ( jak dla mnie wynik ). Czemu taki kawałek kodu :

Kopiuj
		Set < Set < Integer> > asd = new HashSet<>();
		Set <Integer> test1= new HashSet<>();
		Set <Integer> test2= new HashSet<>();
		Set <Integer> test3= new HashSet<>();
		asd.add(test1); asd.add(test2); asd.add(test3);
		System.out.println(""+ asd.size());

daje wynik 1, a nie ( jak bym się spodziewał ) wynik 3 ? Ile rzeczywiście jest tam elementów ? Jeśli 1, to w takim razie jak dodać ich więcej ?

Wibowit
  • Rejestracja:około 20 lat
  • Ostatnio:około 3 godziny
1

Set w założeniu ma zawierać tylko unikalne elementy. Unikalne w sensie equalsa. test1.equals(test2) da true, więc logiczne że zbiorczy zbiór (masło maślane :P) potraktuje je jako takie same elementy. Jak chcesz mieć zbiór z duplikatami to musisz użyć multizbioru (multiset), dostępne np w Google Guava.
http://docs.guava-libraries.googlecode.com/git/javadoc/com/google/common/collect/Multiset.html

ATSD:
System.out.println(""+ asd.size());
Przy println nie musisz robić takich sztuczek. Wystarczy println(liczba).


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 3x, ostatnio: Wibowit

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.