BigInteger kopieren

8

Vielleicht bin ich wirklich verwirrt, weil es eine sehr einfache Frage scheint, aber Google und die offizielle Dokumentation waren nicht genug.

Ich möchte einen BigInteger kopieren und finde keinen sauberen Weg. BigInteger a = b wenn b ein BigInteger ist, da BigInteger ein Objekt ist und hier kein Operator überladen wird, verweist a auf das gleiche Objekt wie b

Der sauberste Weg, den ich bisher gefunden habe, ist BigInteger a = b.add(BigInteger.ZERO) , aber immer noch ein schmutziger Weg für mich.

    
Carlos Ledesma 08.01.2013, 01:13
quelle

5 Antworten

9

BigInteger ist unveränderlich wie andere Wrapper-Klassen wie Integer und String . Also keine Sorge wegen möglicher Veränderung / Manipulation.

P.S: Als Bonus gibt es hier einen Link, wenn ein defensives Kopieren benötigt wird.

Ссылка

    
James P. 08.01.2013, 01:33
quelle
14

BigInteger ist unveränderlich - es sollte niemals nötig sein, ein BigInteger zu kopieren.

    
Louis Wasserman 08.01.2013 01:19
quelle
6

Sie können verwenden BigInteger(String val)

%Vor%

Obwohl dies möglich ist, sind BigInteger Objekte unveränderlich und ich kann mir nicht vorstellen, dass Sie kopieren müssen.

    
Chris Dargis 08.01.2013 01:15
quelle
3

Erstens sollten Sie nicht unbedingt BigInteger kopieren müssen, da es eine unveränderliche Klasse ist. (Das Kopieren eines BigInteger ist ungefähr so ​​nützlich wie das Kopieren eines String ...)

Aber wenn Sie eins kopieren müssen, dann wäre ein effizienterer Weg das zu tun:

%Vor%

Dies vermeidet die (relativ) teure Binär - & gt; Dezimal - & gt; binäre Konvertierungen und die Erstellung einer Zwischenzeichenfolge.

Und BigInteger.clone() sollte noch effizienter sein ...

    
Stephen C 08.01.2013 01:31
quelle
1

Wie wäre es mit:

%Vor%

Aber wie gesagt, es ist unveränderlich, also sollte es keine Notwendigkeit geben.

    
Eli Algranti 08.01.2013 01:19
quelle

Tags und Links