Szukam bardzo prostego sposobu na stworzenie Zestawu.
Arrays.asList("a", "b" ...)
tworzy plik List<String>
Czy jest coś podobnego do Set
?
java
collections
cahen
źródło
źródło
Odpowiedzi:
Teraz dzięki Java 8 możesz to zrobić bez konieczności korzystania z platformy zewnętrznej:
Zobacz Kolekcjonerzy .
Cieszyć się!
źródło
Korzystanie z guawy jest takie proste:
Lub dla zmiennego zestawu:
Więcej typów danych można znaleźć w podręczniku użytkownika Guava
źródło
Sets.newHashSet("a", "b")
lubSets.newLinkedHashSet("a", "b")
Sets.newLinkedHashSet()
nie istnieje z tym podpisem, przepraszamSet<String> mySet = ImmutableSet.of("a", "b");
Możesz użyć
źródło
W szczególnych przypadkach zestawów z zerowym lub jednym składnikiem możesz użyć:
i:
źródło
java.util.Collections.emptySet()
jest moim zdaniem preferowany względem EMPTY_SET ze względu na bezpieczeństwo typów. Z komentarzy w klasie Kolekcje:Unlike the like-named field, this method is parameterized.
Jak powiedzieli inni, użyj:
Powodem tego, że nie istnieje w Javie, jest to, że
Arrays.asList
zwraca listę o stałym rozmiarze, innymi słowy:Zwroty:
Nie ma realizacja JDK o „stałej wielkości”
Set
wewnątrzArrays
klasy. Dlaczego tego chcesz? ASet
gwarantuje, że nie ma duplikatów, ale jeśli wpisując je ręcznie, nie ma potrzeby tej funkcjonalności ... iList
ma więcej metod. Oba interfejsy rozszerzająCollection
iIterable
.Jak powiedzieli inni, użyj guawy, jeśli naprawdę chcesz tej funkcji - ponieważ nie ma jej w JDK. Sprawdź ich odpowiedzi (w szczególności odpowiedź Michaela Schmeißera), aby uzyskać informacje na ten temat.
źródło
W Javie 9 podobna funkcja została dodana metodami fabrycznymi:
(Istnieją również odpowiedniki dla
List
.)źródło
Nie, ale możesz to zrobić w ten sposób
źródło
W guawie możesz użyć
newHashSet
źródło
Oto mała metoda, której możesz użyć
źródło
Innym sposobem na zrobienie tego za pomocą Java 8 i wyliczeń byłoby:
Zobacz EnumSet .
Poleciłbym analizę wydajności między tym podejściem a
ponieważ jeśli masz więcej niż pięć elementów, javadoc metody stwierdza, że mogą to być problemy z wydajnością, jak widać w javadoc Set.Of (E, E ...) .
źródło