• Willkommen im Geoclub - dem größten deutschsprachigen Geocaching-Forum. Registriere dich kostenlos, um alle Inhalte zu sehen und neue Beiträge zu erstellen.

[DEV] MutableInteger

pfeffer

Geowizard
diese Klasse ist mir grad aufgefallen.
Irgendwie scheint mir das keine gute Idee zu sein, jetzt eine eigene Speichervwerwaltung für int aufzubauen. Man bedenke auch, dass die Nutzung von Interfaces zumindest due Sun Java VM erheblich verlangsamt.

Oder habe ich da etwas falsch verstanden?

Was meint Ihr?

Gruß,
Pfeffer.
 

Engywuck

Geowizard
Hast Du falsch verstanden.
Die Klasse wird innerhalb der CacheDB verwendet, und zwar um das Erzeugen neuer Objekte zu verhindern. Kurzabriss:
Um einen Cache auch per Wegpunktnamen ansprechen zu können, wird dort parallel zum üblichen Vector, der die Cache-Objekte speichert, auch noch eine Hashtabelle mitgeführt, die zu jedem Wegpunkt den Index speichert, an dem das Objekt im Vector zu finden ist. Wenn sich dort die Reihenfolge ändert, müssen diese Werte natürlich geändert werden. Dafür ist die Klasse MutableInteger: Dort kann ich einen Integer-Wert auf den mir genehmen Wert ändern, ohne das alte Integer-Objekt wegzuwerfen und dann ein neues zu erzeugen.

Alles klar?

Gruß,
E.
 
OP
pfeffer

pfeffer

Geowizard
mir stellen sich da 2 Fragen:
1. kann man normale integer nicht ändern?
2. sicher, dass das Ansprechen üner Interface-implementationen schneller ist als neue Integer zu erzeugen? Irgendwo im Netz hatte ich in den letzten Tagen zufällig von einem Test gelesen, der besagte, dass die Sun java-VM für über Interfaces Realisiertes 4mal so lange braucht wie über eine final class.

Gruß,
Pfeffer.
 

Engywuck

Geowizard
- Ich hab beim normalen Integer-Objekt nichts zum ändern gefunden. Der Wert wird im Konstruktor gesetzt. Hab ich was übersehen?
- Das Interface wird gar nicht verwendet. Den Interface-Teil kann man im Prinzip auch weglassen.

Gruß,
E.
 
OP
pfeffer

pfeffer

Geowizard
das ist ja krass! - ich auch nicht.
http://mindprod.com/jgloss/immutable.html habe ich wieder was dazu gelernt.
Also, so machst es schon Sinn so eine Klasse zu haben. Mach sie ohne parent und ohne Interface final, damit's ordentlich schnell läuft.

Gruß,
Pfeffer.
 

greiol

Geoguru
ok, ich oute mich, ich verstehe es nicht. vor allem weil wir nahezu keine Integer verwenden sondern int. und die sind afaik von hause aus mutable. ich finde die mutables auch derzeit an stellen an denen ich int erwartet hätte und nicht Integer. das verwirrt mich.
 
OP
pfeffer

pfeffer

Geowizard
also wo int geht, würd ich int verwenden. Das ist ziemlich sicher schneller als die Verwendung von Klassen.

Gruß,
Pfeffer.
 

Engywuck

Geowizard
greiol schrieb:
ovor allem weil wir nahezu keine Integer verwenden sondern int. und die sind afaik von hause aus mutable.
Eine Hashtable nimmt aber nur Objects und keine ints...
greiol schrieb:
ich finde die mutables auch derzeit an stellen an denen ich int erwartet hätte und nicht Integer. das verwirrt mich.
Ich hab jetzt noch nicht nachgeguckt, aber wenn man ein Objekt verwendet, wo man auch einen primitiven Typ verwendet, wäre ich auch verwundert und würde erstmal genauer hingucken, ob es einen Grund dafür gibt.

Gruß,
E.
 
Oben