2015-07-08 8 views
11

Na przykład lubię zainicjować zestaw jak [1,2,3, ..., 100].Czy istnieje metoda w języku Java, aby zainicjować zestaw po kroku 1 lub innej długości?

Zwykle robimy w następujący sposób:

for(int i = 1;i <= 100;i++){ 
    set.add(i); 
} 

Czy istnieje jakiś sposób, aby to zrobić wygodniej?

taki jak someMethod(startIndex, endIndex, step);

przy użyciu tego, że można łatwo startowych zestawu jak [1,2,3,4,5], [1,3,5,7,9], lub czy inne.

+0

Twoja pętla for jest w porządku. jeśli potrzebujesz go dużo, zawiń w metodę. – ZhongYu

Odpowiedz

19

Można używać strumieni Java 8.

Na przykład:

Set<Integer> mySet = IntStream.range(1,101).boxed().collect(Collectors.toSet()); 

lub dla nieparzystych tylko liczby:

Set<Integer> mySet = IntStream.range(1,101).filter(i->i%2==1).boxed().collect(Collectors.toSet()); 
  • IntStream.range jest łatwym sposobem uzyskuje liczb w danym zakresie.
  • Następnie możesz zastosować filtry, jeśli potrzebujesz tylko niektórych liczb.
  • Wreszcie możesz je odebrać do dowolnej kolekcji.
+7

W przypadku liczb nieparzystych można również zrobić coś w rodzaju 'IntStream.iterate (1, i -> i + 2) .limit (51) ...'. – Keppil

+0

@Keppil Yep, byłoby bardziej wydajne – Eran

+3

'IntStream.iterate (1, i -> i + 2) .limit (51)' nie jest zbyt czytelny. Musisz to obliczyć, aby to zrozumieć (zamiast po prostu odczytać "100") i jest podatny na błędy typu "jeden po drugim". W rzeczywistości ten strumień zawiera także "101". – user140547

Powiązane problemy