Datentypen Kopieren von Datentypen

Feeder

Bekanntes Mitglied
Hey, man nehme an, man programmiere eine Schachengine.
Um ein "Ziehen" möglich zu machen, würde ich eine Calculatorklasse mit einem Spielfeld(Board) als Attribut erstellen.
Dann würde ich diesen Calculator(zunächst in festgelegte Tiefe) nach allen anderen möglichen Spielfelder suchen lassen.
Ein Spielfeld wäre aber immer das selbe Spielfeld davor mit einer Veränderung(durch Zug)
Das Problem ist, dass ein von mir erstelltes:

Spielfeld.clone() viel zu viel Rechenkraft in den Sand setzen würde. Die AI soll das Spielfeld von meinem Zwischenspeicher kopieren, das ist nicht so wenn ich Schreibe:

Java:
public Board copy{
Board b = new Board();
b.setzte64Feldbeschreibungen(); // Ein Feld trägt Wert Figur. Figur trägt Werte: 
//boolean farbe; 
// Integer FigurID. 
//Ein Brett hat 64 Felder
return b;
}
 

Feeder

Bekanntes Mitglied
Meine Frage: Wie kopiere ich ein Objekt wie einen atomaren Datentyp, ohne dabei ein Objekt erzeugen zu müssen, in welchem man erst alle Werte einzeln abgleichen muss?

Code:
...

int a = 0;
int b  = 6;
a = b; //a ist Kopie von b

...

Object b;
Object c = new Object();
b = c; // b verweist auf c, ist aber keine Kopie von ihm
 

mrBrown

Super-Moderator
Mitarbeiter
Einfache Antwort: Gar nicht.

Das geht nur explizit über new oder implizit mit clone (was aber alles andere als empfehlenswert ist).
Für deinen Anwendungfall oben wird es vermutlich am leichtesten, wenn du mutable State vermeidest, und immer "Kopien" anfertigst.
 

Feeder

Bekanntes Mitglied
Einfache Antwort: Gar nicht.

Das geht nur explizit über new oder implizit mit clone (was aber alles andere als empfehlenswert ist).
Für deinen Anwendungfall oben wird es vermutlich am leichtesten, wenn du mutable State vermeidest, und immer "Kopien" anfertigst.

Ist ja DRECK :confused:
Das frisst ja übelst Leistung: Wie kann ich den genauen Wert ausrechnen?:eek: (also theoretisch ohne TIMER :D)

Danke für die Antwort.:p
 
Zuletzt bearbeitet von einem Moderator:

mrBrown

Super-Moderator
Mitarbeiter
"übelst Leistung" ist sehr relativ - vermutlich deutlich weniger als du denkst.

"ausrechnen" gar nicht, nur messen - am einfachsten mit JMH. Allerdings kannst du das zu nichts in's Verhältnis setzten, von daher ist das vermutlich ziemlich nichtssagenden ;)
 

Feeder

Bekanntes Mitglied
"übelst Leistung" ist sehr relativ - vermutlich deutlich weniger als du denkst.

"ausrechnen" gar nicht, nur messen - am einfachsten mit JMH. Allerdings kannst du das zu nichts in's Verhältnis setzten, von daher ist das vermutlich ziemlich nichtssagenden ;)
IM Grunde macht ne Chess Engine ja nicht anderes als:

Züge suchen
Brettstellung nach Zügen bewerten
Ziehen

Ich vermute also das ist jede Menge Leistung oder?
#I AM NOOB
 

mrBrown

Super-Moderator
Mitarbeiter
Alle Zahlen von 1 bis ∞ aufaddieren braucht auch ziemlich Leistung, auch wenn ein '+' so ziemlich das simpelste ist ;)
Generell sind solche Aussagen über Performance immer schwierig - schneller geht es ohne eigene Objekte, aber eben auch "unhandlicher" - und in nahezu allen Fällen ist Performance dann doch nicht so wichtig wie vernünftige Struktur (=sinnvolle Objekte)
 

JCODA

Top Contributor
Du könntest dir auch "History"-Objekte speichern, die jeweils nur einen Zug beinhalten, so kann durch eine Sammlung von HistoryObjekten die Stellung rekonstruiert werden, ohne das komplette Spielfeld kopieren zu müssen. (Dies bietet sich insbesondere an, da man ja meist eh Tiefen/Breitesuchen macht. )
 

mrBrown

Super-Moderator
Mitarbeiter
Du könntest dir auch "History"-Objekte speichern, die jeweils nur einen Zug beinhalten, so kann durch eine Sammlung von HistoryObjekten die Stellung rekonstruiert werden, ohne das komplette Spielfeld kopieren zu müssen. (Dies bietet sich insbesondere an, da man ja meist eh Tiefen/Breitesuchen macht. )
Das dürfte Speichereffizienter, aber dafür auch rechenaufwendiger sein
 

JCODA

Top Contributor
Das dürfte Speichereffizienter, aber dafür auch rechenaufwendiger sein
Ja, vielleicht, vielleicht auch nicht, wenn man z.B. durch zwei direkte Arrayzugriffe die Ursprungsstellung wieder bekommt. Kann mir kaum vorstellen, dass dies rechenaufwendiger ist, als das komplette Board zu kopieren. (Momentan fallen mir auch keine Randfälle ein, die man hier beachten muss, und selbst 2-3 if abfragen schätze ich nicht als viel rechenaufwendiger ein.)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Ordner kopieren Allgemeine Java-Themen 5
S Referenzdatentyp kopieren Allgemeine Java-Themen 5
I Wie Vektor-Grafik in die Zwischenablage kopieren? Allgemeine Java-Themen 2
J Gebautes Jar per Maven in einen Docker Container kopieren Allgemeine Java-Themen 0
L File beim Kopieren in einen anderen Ordner umbenennen Allgemeine Java-Themen 6
M Dateien schneller kopieren Allgemeine Java-Themen 1
M Dateien nach kopieren vergleichen Allgemeine Java-Themen 9
B In zwischenablage kopieren Allgemeine Java-Themen 2
K JAR Datei Corrupt nach Kopieren Allgemeine Java-Themen 4
D Kopieren von Dateien aus einem Ordner in einen anderen Allgemeine Java-Themen 6
A Bestimmte Inhalte aus ArrayList 1 in ArrayList 2 kopieren Allgemeine Java-Themen 6
N String ins Clipboard kopieren ohne makieren. Allgemeine Java-Themen 12
J Umwandeln von URL zu File und danach kopieren geht nicht Allgemeine Java-Themen 1
F Java moved Files statt sie zu kopieren Allgemeine Java-Themen 12
X Dateien von der Jar zum Ordner kopieren. Allgemeine Java-Themen 4
J PDF-Datei aus JAR-Archiv in Dateisystem kopieren Allgemeine Java-Themen 1
S Einen übergebenen String kopieren Allgemeine Java-Themen 3
S in Zip kopieren -- Backup-Programm Allgemeine Java-Themen 9
P Vectorelemente in einen anderen Vector kopieren Allgemeine Java-Themen 12
J Bilder halb in falscher Farbe nach kopieren aus Web Allgemeine Java-Themen 3
D Mit Hilfe von Java aus Excel-Sheet Zellen in neues Excel Dokument kopieren Allgemeine Java-Themen 3
K NetBeans Ordner bei 'Clean&Build' automatisch in dist Verzeichnis kopieren Allgemeine Java-Themen 0
T Ordner samt Dateien kopieren Allgemeine Java-Themen 11
Todesbote Zeilen aus Excel in andere Excel Tabelle kopieren Allgemeine Java-Themen 0
T Mit Apache Poi Daten aus einer Excel Tabelle kopieren und in Word einfügen Allgemeine Java-Themen 1
A Collections Array-Elemente in ArrayList kopieren ohne Schleife Allgemeine Java-Themen 7
P jar aus der jar kopieren XD Allgemeine Java-Themen 4
M Pakete in Ordner Kopieren Allgemeine Java-Themen 7
D File mit Inhalt kopieren und dieses File dann neu erstellen ? Allgemeine Java-Themen 4
kodela Problem mit Kopieren über FileChannel Allgemeine Java-Themen 4
H Kopieren sehr langsam Allgemeine Java-Themen 5
I Java Ordner kopieren [Error] Allgemeine Java-Themen 6
E Files Kopieren Allgemeine Java-Themen 8
P Daten kopieren mit nio - Zugriff verweigert Allgemeine Java-Themen 8
Z Ausschneiden, Kopieren, Einfügen, Löschen in JTextArea Allgemeine Java-Themen 5
S exe Kopieren Allgemeine Java-Themen 11
E Ordner rekursiv kopieren Allgemeine Java-Themen 8
J Standard-I´/O kopieren Allgemeine Java-Themen 5
R kopieren von Dateien und Verzeichnissen - UNICODE? Allgemeine Java-Themen 4
S Kopieren von Datei führt zu Beschädigung Allgemeine Java-Themen 7
D markierten Text kopieren Allgemeine Java-Themen 2
O ist tiefes Kopieren sinnvoll? Allgemeine Java-Themen 14
B Zertifikat des Users speichern (serialisieren oder kopieren) Allgemeine Java-Themen 2
S Dateiinhalt kopieren Allgemeine Java-Themen 4
G Object mit clone kopieren Allgemeine Java-Themen 21
F Kopieren eines Objekts Allgemeine Java-Themen 3
D Kopieren und Einfügen Allgemeine Java-Themen 8
C Kopieren von Dateien die von einem anderen Programm verwendet werden? Allgemeine Java-Themen 7
E Blob Element kopieren Allgemeine Java-Themen 12
0din Websites kopieren Allgemeine Java-Themen 25
D mit java kopieren und umbenennen Allgemeine Java-Themen 6
X Objektsammlung clonen bzw. kopieren Allgemeine Java-Themen 5
A Beim Kopieren werden Bilder verfälscht Allgemeine Java-Themen 3
V Dateien kopieren Allgemeine Java-Themen 6
N Daten auf Server kopieren Allgemeine Java-Themen 6
Q Iterator kopieren Allgemeine Java-Themen 6
M Wie in Eclipse Quellcode incl. Zeilennummern kopieren? Allgemeine Java-Themen 6
G Daten von Excel kopieren - sinnvolle Datenstruktur? Allgemeine Java-Themen 3
P Eigene Klasse kopieren die auf sich selbst refferenziert Allgemeine Java-Themen 8
J Externes Programm - Konsolenausgabe kopieren/sichtbar machen Allgemeine Java-Themen 22
C File in Jar kopieren? Allgemeine Java-Themen 9
G ANT und Verzeichnisstruktur kopieren Allgemeine Java-Themen 2
G Datei löschen nach kopieren geht nicht Allgemeine Java-Themen 5
R Dateien lokal kopieren Allgemeine Java-Themen 6
P Objekt kopieren Allgemeine Java-Themen 8
hdi ArrayList kopieren? Allgemeine Java-Themen 8
G Datei kopieren Allgemeine Java-Themen 27
O Vektor kopieren (Inhalt, nicht Referenzen) Allgemeine Java-Themen 3
I Teile von ArrayList in eine andere kopieren? Allgemeine Java-Themen 2
V Datei kopieren und Datum erhalten Allgemeine Java-Themen 2
V Sich selbst kopieren (Jar- Datei) Allgemeine Java-Themen 3
G Code mit Zeilennummern kopieren? Allgemeine Java-Themen 3
S Stream ohne Referenz kopieren ? Allgemeine Java-Themen 4
M variable übergeben NICHT KOPIEREN Allgemeine Java-Themen 12
P String in Array kopieren Allgemeine Java-Themen 3
S Dateien auf Diskette kopieren Allgemeine Java-Themen 3
M Datei kopieren? Allgemeine Java-Themen 2
MQue Array in ein anderes Array kopieren Allgemeine Java-Themen 5
D aufruf beim kopieren Allgemeine Java-Themen 11
G Objekt dynamisch erstellen und Inhalte kopieren Allgemeine Java-Themen 6
K Datei kopieren Allgemeine Java-Themen 2
M 2-dimensionalen array schnell kopieren Allgemeine Java-Themen 6
T Text aus Java-Applet kopieren. Allgemeine Java-Themen 14
TheJavaKid Textformatierung bei Kopieren übernehmen Allgemeine Java-Themen 8
P Mehrzeiligen Text aus JTA lesen und in andere JTA kopieren Allgemeine Java-Themen 7
S Objekte kopieren Allgemeine Java-Themen 6
W Dateien über Clipboard kopieren Allgemeine Java-Themen 2
G InputStream kopieren? Allgemeine Java-Themen 6
G In Windows Datei kopieren Allgemeine Java-Themen 2
G Text aus Chatfenster kopieren Allgemeine Java-Themen 7
M Cache & Datein kopieren Allgemeine Java-Themen 3
R Problem bei Kopieren eines Ordners Allgemeine Java-Themen 13
J Nicht-static variable in static variable kopieren - wie? Allgemeine Java-Themen 14
m@nu Kopieren beschleunigen Allgemeine Java-Themen 3
T Musikdateien von CD Kopieren Allgemeine Java-Themen 4
M Bild in Zwischenablage kopieren? Allgemeine Java-Themen 7
bernd Problem beim kopieren! Allgemeine Java-Themen 2
G Dateien werden beim Kopieren zerstört Allgemeine Java-Themen 4
N Schnellste Art Dateien zu kopieren Allgemeine Java-Themen 16
U Dateien kopieren Allgemeine Java-Themen 3

Ähnliche Java Themen


Oben