Lista BigInteger o określonym zakresie

0

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());

2

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

0

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)

1

Nie rozumiem - chcesz przekształcić number z Twojego programu z typu String na int, tak?
W takim razie Integer.parseInt()

0

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

5

Ile masz RAMu?

1

@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 ?

0

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.

4

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.

0

@kaizodo: Weź po uwagę ile takich liczb 2000 bitowych może być. Próbowales to liczyć ?
2^2000 To dość spora liczba

3

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

0

Lepiej podaj pełna treść zadania, bo jak widzisz jest szerokie pole do (nad)interpretacji ;)

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