Hallo Leute,
ich hab glaub ein copy Problem. Da es performant bleiben soll will ich eigentlich ein Deep Copy vermeiden.
Ich hab eine Data Klasse und eine Buffer Klasse. Die Bufferklasse soll Segmente aus der Dataklasse Buffern und später wegspeichern.
Hier mal unvollständiger Code:
Das Problem ist jetzt, das ich im m_buffer zwar gleich viele Werte wie oben habe, aber irgendwie passen die Werte nicht mehr. Wenn ich die Werte nicht wegbuffer sondern in der map in Data lasse, dann passen die werte.
der grund warum ich das mache ist, wenn der Buffer voll ist, werden die Segmente serialisiert und auf die Platte gespeichert.
Irgendwas ist hier in dem Java einfach komisch.
ich hab glaub ein copy Problem. Da es performant bleiben soll will ich eigentlich ein Deep Copy vermeiden.
Ich hab eine Data Klasse und eine Buffer Klasse. Die Bufferklasse soll Segmente aus der Dataklasse Buffern und später wegspeichern.
Hier mal unvollständiger Code:
Java:
public class Data{
LinkedHashmap <JDouble, DataEntry> myMap;
Bufferklasse m_bufferklasse;
Data(){
myMap = new LinkedHashmap<JDouble, DataEntry>;
m_bufferklasse = new Bufferklasse();
myMap.put......
}
// später
public void writeToBuffer(){
m_bufferklasse.write(myMap);
// erzeuge neue Map, ### ich glaub hier liegt der fehler bzw. beim copy nacher
myMap = new LinkedHashmap<JDouble, DataEntry>;
// myMap wird dann wieder mit neuen Daten befüllt.
}
}
public class Bufferklasse{
LinkedHashmap<Integer, LinkedHashmap<JDouble, DataEntry> > m_buffer = new .....
public void write( LinkedHashmap<JDouble, DataEntry> myMap, int segment){
// muss ich hier wirklich ein deep copy machen? D.h auch alle DataEntry müssen eigentlich kopiert werden.
m_buffer.put(segment, myMap);
}
}
Das Problem ist jetzt, das ich im m_buffer zwar gleich viele Werte wie oben habe, aber irgendwie passen die Werte nicht mehr. Wenn ich die Werte nicht wegbuffer sondern in der map in Data lasse, dann passen die werte.
der grund warum ich das mache ist, wenn der Buffer voll ist, werden die Segmente serialisiert und auf die Platte gespeichert.
Irgendwas ist hier in dem Java einfach komisch.
Zuletzt bearbeitet: