Dziwny rozmiar Seta

0

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

		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 ?

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).

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