Diese Website existiert nur weil wir Werbung mit AdSense ausliefern.
Bitte den AdBlocker daher auf dieser Website ausschalten! Danke.

[DEV] MutableInteger

Papierloses Cachen.

Moderatoren: arbor95, pfeffer, MiK

Antworten
Benutzeravatar
pfeffer
Geowizard
Beiträge: 2249
Registriert: Mo 31. Jul 2006, 21:20

[DEV] MutableInteger

Beitrag von pfeffer »

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.
Dokumentation mit FAQ zum CacheWolf (Paperless Geocaching): http://cachewolf.org/
Benutzeravatar
Engywuck
Geowizard
Beiträge: 1003
Registriert: Fr 12. Okt 2007, 19:50

Re: [DEV] MutableInteger

Beitrag von Engywuck »

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.
Benutzeravatar
pfeffer
Geowizard
Beiträge: 2249
Registriert: Mo 31. Jul 2006, 21:20

Re: [DEV] MutableInteger

Beitrag von pfeffer »

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.
Dokumentation mit FAQ zum CacheWolf (Paperless Geocaching): http://cachewolf.org/
Benutzeravatar
Engywuck
Geowizard
Beiträge: 1003
Registriert: Fr 12. Okt 2007, 19:50

Re: [DEV] MutableInteger

Beitrag von Engywuck »

- 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.
Benutzeravatar
pfeffer
Geowizard
Beiträge: 2249
Registriert: Mo 31. Jul 2006, 21:20

Re: [DEV] MutableInteger

Beitrag von pfeffer »

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.
Dokumentation mit FAQ zum CacheWolf (Paperless Geocaching): http://cachewolf.org/
greiol
Geoguru
Beiträge: 4905
Registriert: Di 22. Nov 2005, 10:26

Re: [DEV] MutableInteger

Beitrag von greiol »

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.
Wer vom Ziel nicht weiß, kann den Weg nicht haben
(Christian Morgenstern)
Benutzeravatar
pfeffer
Geowizard
Beiträge: 2249
Registriert: Mo 31. Jul 2006, 21:20

Re: [DEV] MutableInteger

Beitrag von pfeffer »

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

Gruß,
Pfeffer.
Dokumentation mit FAQ zum CacheWolf (Paperless Geocaching): http://cachewolf.org/
Benutzeravatar
Engywuck
Geowizard
Beiträge: 1003
Registriert: Fr 12. Okt 2007, 19:50

Re: [DEV] MutableInteger

Beitrag von Engywuck »

greiol hat geschrieben: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 hat geschrieben: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.
Antworten