Czy isnieje sposób aby utworzyć i wypełnić List<BigInteger> o określonym maksymalnym zakresie?
W List<Integer> zawsze to robiłem w następujący sposób:
List<Integer> integers = IntStream.range(0, number).boxed().collect(Collectors.toList());
W teorii coś takiego powinno zadziałać:
IntStream.range(0, number).mapToObj(BigInteger::valueOf).collect(Collectors.toList());
Sprawdziłem i działa, skorzystaj z mapToObj
i stworzysz sobie w ten sposób dowolny obiekt, a BigInteger jak się okazuje ma valueOf
No to rzeczywiście by działało, ale nie o to mi chodziło - wynika to z mojego źle zadanego pytania. "number"(niefortunna nazwa) to w tym BigInteger z argumentu metody - defacto jest w ciapkach czyli String.
public static BigInteger getBits(BigInteger number)
Nie rozumiem - chcesz przekształcić number
z Twojego programu z typu String
na int
, tak?
W takim razie Integer.parseInt()
W argumencie metody korzystam z BigInteger(String val) - zamienia on String na BigInteger. Chciałbym go (BigIntegra) wykorzystać, aby utworzyć i wypełnić Listę. Int mnie nie interesuje bo posiada za mały zakres liczbowy, którego potrzebuję.
Ile masz RAMu?
@kaizodo: tak czytam Twoje wyjaśnienia i nie rozumiem. Chcesz mieć baaaardzo dużą listę, czy listę o "normalnej" długości ale wypełnioną liczbami z zakresu 0..twojBigInteger ?
Przepraszam, jeśli piszę nie jasno. Generalnie to chce mieć listę cyfr o liczbie bitów od 0 do 2000 (zakres z argumentu metody, ale 2000 to max). Następnie tę listę chce przefiltrować(czy dodać konkretne elementy do nowej pustej listy) np. aby zostały tylko x-Bitowe liczby (np. 65 bitowe - jeśli msb poprzedzają 0 to chcę je zignorować). Wynikiem jest random z listy x-Bitowej.
Udało mi się to zrobić ale na zwykłych Int.
Generalnie to chce mieć listę cyfr o liczbie bitów od 0 do 2000
Po pierwsze nie cyfr, a liczb zapewne.
Po drugie: gwarantuję Ci, że nie chcesz mieć takiej listy. (Patrz moje pierwsze pytanie).
Ale możesz mieć taki strumień, który można by filtrować. I tu rodzi się drugie pytanie:
Ile masz czasu na to? Dokładność do miliarda lat będzie ok.
Edit:
jeśli chcesz po prostu wybrać losową liczbę 65 bitową to chyba wymyśliłeś chyba najmocniejszy BogoRand o jakim słyszałem. To jest nawet jakieś osiągnięcie.
@kaizodo: Weź po uwagę ile takich liczb 2000 bitowych może być. Próbowales to liczyć ?
2^2000
To dość spora liczba
Wyobrażam sobie teraz jakiegoś prowadzącego jak przy flaszce mówi do innego:
"i wtedy kazałem im wygenerować wszystkie liczby o liczbie bitów od 0 do 2000..."
Lepiej podaj pełna treść zadania, bo jak widzisz jest szerokie pole do (nad)interpretacji ;)