Eindeutige Instanzen von einem Objekt

Status
Nicht offen für weitere Antworten.
K

kaip

Gast
Hallo zusammen,
ich habe ein kleines Problem und suche nach einer Lösung um beim lernen weiterzukommen.

Ich habe eine Klasse Buch, in der gibt es einen String ISBN. Dies soll auch die "ID" jeder Instanz sein, also es darf keine zweite Instanzen mit dem gleichen ISBN String geben! (geht das? Also kann man eine Variable in einer Klasse "eindeutig" über alle Instanzen machen?)

Ausserdem würde ich gerne wenn z.B. schon eine Instanz mit der ID 12345 existiert, und eine neue Instanz erstellt werden soll mit der ID 12345, das die bestehende Instanz als Referenz übergeben wird.

Als Workaround habe ich mir hierzu überlegt eine Liste zu erstellen und alle erstellten Instanzen in diese Liste einzutragen und da nachzuschauen. Meine Frage wäre nun, ob es da ne einfachere Lösung gibt.


mfg
kaip
 
S

SlaterB

Gast
einfacher nicht, schneller wäre eine HashMap,
bei 1000 Elementen musst du auch in einer sortierten Liste 500x schauen,
in einer Map sind nur ein Bruchteil an vergleichbaren Arbeitsschritten nötig

an stelle eines Konstruktors musst du eine Operation verwenden
(könnte statisch sein oder in einem Factory-Objekt)

getCreateObject(String isbn) {
if bekannt return altes objekt
else erstelle neues, speichere neues, gib neues zurück
}

> geht das? Also kann man eine Variable in einer Klasse "eindeutig" über alle Instanzen machen?

nur durch obige Konstruktion oder ähnliches, nichts natürliches
 

HaBaLeS

Aktives Mitglied
Es gibt kein Java Sprachfeature, das dein Problem löst, ohne das du das Vergleichen selbst implementieren musst.

Du kannst eine Factory nutzen um die Objekte zu erstellen, und die Liste mit den bereits vergebenen ID´s dort plegen, dann hast du es sauber weggekapselt. Um platz zu sparen, würde ich jedoch eine Map nehmen und als Key die ID nehmen, als Valie nimmst du dann null oder ein int, was am wenigsten platz braucht. Bei einer Map kann man sehr schnell auf die existenz eines Key´s prüfen ohne die Liste komplet durchsuchen zu müssen.
 
S

SlaterB

Gast
> als Value nimmst du dann null oder ein int, was am wenigsten platz braucht

jede Objektreferenz ist gleich groß,
da man die zugehörigen Objekte doch gerne wiederfindet bieten sich diese als Value an?
 

HaBaLeS

Aktives Mitglied
SlaterB hat gesagt.:
> jede Objektreferenz ist gleich groß,
da man die zugehörigen Objekte doch gerne wiederfindet bieten sich diese als Value an?

Stimmt, wenn man sie in der Factory wiederfinden will was ich mir nicht wirklich vorstellen kann. Was aber, wenn man die Bücher anderewitig verwaltet und auch wieder löschen will? Dann jaste in der Factory eine Referenz auf das Object und damit ein Memory Leak!
 
S

SlaterB

Gast
nun, dann sollte man der Factory sagen, dass dieses Objekt gelöscht wird ;)
aber müßig darüber zu diskutieren, alles geht wenn man es nur baut
 

Wildcard

Top Contributor
Weak/SoftReferences in der Factory benutzen.
Hat den Vorteil das man sich an jeder Stelle Objekte von der Factory holen kann ohne sich darum zu kümmern ob schon eine Instanz Vorliegt.
 
K

kaip

Gast
Danke für eure superschnellen Antworten! :toll: Echt super das Board hier *dickes Lob vertei*

Ich habe mir nun eine Klasse erstellt, BuecherPool, in der ich dann eine Hashmap erstelle und mehrere Methoden zum hinzufügen,erstellen und liefern von Büchern.

In meiner Main Methode erstelle ich eine Instanz dieser BuecherPool Klasse und greife nun auf diesen Pool zu, klappt wunderbar.

Nun würde ich gerne noch ein paar weitere Klassen erweitern, damit diese ebenfalls auf den Pool zugreifen können. Wäre hierzu das sinnvollste die BuecherPool Instanz als Globale Variable zu definieren? ???:L


Sorry, aber könnt ihr mir sagen was "Factory" ist? Auf die schnelle konnte ich durch suchen bei Google mit Factory und Java nichts sinnvolles finden. :?:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Eindeutige Nummer (8 stellig) erzeugen Java Basics - Anfänger-Themen 9
A Eindeutige Elemente aus Array extrahieren Java Basics - Anfänger-Themen 9
I Eindeutige Stringvariablen in Schleife generieren Java Basics - Anfänger-Themen 4
E Eindeutige Identifikation eines Pcs? Java Basics - Anfänger-Themen 18
N Eindeutige Dateinamen generieren Java Basics - Anfänger-Themen 17
H eindeutige Instanz erzeugen Java Basics - Anfänger-Themen 4
J Klassen Instanzen einer Klasse in einer anderen unabhängigen Klasse nutzen Java Basics - Anfänger-Themen 4
G zwei Instanzen einer Klasse Java Basics - Anfänger-Themen 29
C Was machen mit nicht mehr verwendeten Instanzen ? Java Basics - Anfänger-Themen 18
C Instanzen, wann muss ich Instanzen erzeugen & wo?) Java Basics - Anfänger-Themen 23
A Klassen Zugriff auf Instanzen Java Basics - Anfänger-Themen 2
F Mehrere Instanzen der Klasse A EINER Instanz der Klasse B übergeben Java Basics - Anfänger-Themen 3
M Alle Instanzen einer Klasse ansprechen Java Basics - Anfänger-Themen 4
H Erste Schritte JTree: Instanzen einer Klasse speichern oder Namen/Strings... Java Basics - Anfänger-Themen 4
B OOP Summe aus verschiedenen Instanzen einer Klasse berechnen Java Basics - Anfänger-Themen 2
Z Was habe ich davon mit einem Datentyp verschiedene Instanzen zu haben? Java Basics - Anfänger-Themen 6
Q OOP Mehrere Instanzen auf ein Feld Java Basics - Anfänger-Themen 13
G Instanzen eines Interfaces erzeugen Java Basics - Anfänger-Themen 7
S Direkt Instanzen anlegen Java Basics - Anfänger-Themen 1
K Variablen Instanzen gleich aber warum ? Java Basics - Anfänger-Themen 3
D Instanzen durch Methode Java Basics - Anfänger-Themen 14
W Zugriff auf Instanzen von Klassen Java Basics - Anfänger-Themen 8
S aus Text Datei Instanzen erzeugen, so richtig? Java Basics - Anfänger-Themen 4
O Liste aller Instanzen einer Klasse Java Basics - Anfänger-Themen 18
H Klassen Instanzen mit anderen Klassen erzeugen Java Basics - Anfänger-Themen 5
C Referenzen zu Instanzen einer Klasse im Array Java Basics - Anfänger-Themen 8
B Enum: Instanzen Java Basics - Anfänger-Themen 10
M Instanzen vergleichen? Java Basics - Anfänger-Themen 12
H Klassen, Konstruktoren, Instanzen etc Java Basics - Anfänger-Themen 6
W Instanzen, Klassen Java Basics - Anfänger-Themen 2
C Vectorarrays und Instanzen Java Basics - Anfänger-Themen 10
S alle instanzen einer klasse löschen Java Basics - Anfänger-Themen 18
C OOP Instanzen ansprechen Java Basics - Anfänger-Themen 3
P Verständnisfrage zu Instanzen/Objekten Java Basics - Anfänger-Themen 9
B Zugriff auf Variablen in nicht bekannten Instanzen Java Basics - Anfänger-Themen 6
R mit klassen-instanzen arbeiten in packages Java Basics - Anfänger-Themen 10
M Instanzen, Referenzen und Collections Java Basics - Anfänger-Themen 3
A Mehrere Instanzen einer eigenen Klasse in einem Array Java Basics - Anfänger-Themen 5
W mehrere (numerierte) Instanzen erzeugen Java Basics - Anfänger-Themen 3
M Dynamisch Instanzen erstellen. Java Basics - Anfänger-Themen 4
N Instanzen von beliebigen Klassen aus dem Filesystem erzeugen Java Basics - Anfänger-Themen 7
M Problem mit Instanzen von JLabel Java Basics - Anfänger-Themen 4
E Vermeiden,dass mehrere Instanzen eines Java-Programms laufen Java Basics - Anfänger-Themen 2
V mehrere Instanzen gleicher Name möglich? Java Basics - Anfänger-Themen 3
E instanzen von Klassen erzeugen Java Basics - Anfänger-Themen 2
H Instanzen erzeugen und Methoden aufrufen Java Basics - Anfänger-Themen 5
L verschiedene JPanel-Instanzen erstellen Java Basics - Anfänger-Themen 8
T Wo Daten ablegen für mehrere Servlet-Instanzen? Java Basics - Anfänger-Themen 2
G Instanzen in einem Feld erzeugen Java Basics - Anfänger-Themen 9
J Instanzen dynamisch erzeugen Java Basics - Anfänger-Themen 8
T Instanzen von abstrakten Klassen? Java Basics - Anfänger-Themen 14
D Instanzen einer Klasse Java Basics - Anfänger-Themen 6
G Speicherung von Referenzen auf Instanzen Java Basics - Anfänger-Themen 5
G alle Instanzen einer Klasse serialisieren Java Basics - Anfänger-Themen 4
Silver-Blue mehrere Instanzen einer Klasse, trotz Random immer das Selbe Java Basics - Anfänger-Themen 7
W Instanzen herunterzählen Java Basics - Anfänger-Themen 7
G Instanzen und Referenzen Java Basics - Anfänger-Themen 5
S Instanzen Java Basics - Anfänger-Themen 4
G wenn auch schon oft gefragt (Konstruktor , Instanzen , usw) Java Basics - Anfänger-Themen 6
K Mehrere Werte in einem Switch Case parallel überprüfen Java Basics - Anfänger-Themen 23
Zrebna Fragen zu einem Klassendiagramm Java Basics - Anfänger-Themen 8
S HashMap mehrere Keys zu einem Value Java Basics - Anfänger-Themen 3
S Java: Wie sortiere ich eine ArrayList benutzerdefinierter Objekte nach einem bestimmten Attribut? Java Basics - Anfänger-Themen 2
F 2x 16bit Werte zu einem 32bit und dann splitten mit 0xb Java Basics - Anfänger-Themen 1
J JSON mit einem JPanel Java Basics - Anfänger-Themen 3
F Einem GIT repository ein Projekt hinzufügen Java Basics - Anfänger-Themen 1
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
I Klassen von einem package laden, Statisches Feld auslesen und Objekt erstellen Java Basics - Anfänger-Themen 8
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
J Auf einem JLabel Linien Malen Java Basics - Anfänger-Themen 1
I @Entity Klassen, Service Beans etc. aus einem Share Projekt beziehen? Java Basics - Anfänger-Themen 26
R Images aus einem Array ausgeben Java Basics - Anfänger-Themen 3
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2
D OOP Array einem Objekt zuweisen Java Basics - Anfänger-Themen 2
O Zahlen aus einem char-array per char + Zeichen addieren Java Basics - Anfänger-Themen 2
S Bestimmte werte aus einem Array löschen Java Basics - Anfänger-Themen 2
S Ausgeben wie oft ein Wert in einem Array vorkommt Java Basics - Anfänger-Themen 7
N Einzelne Werte aus einem TreeSet auslesen Java Basics - Anfänger-Themen 2
N Welche Objekte kann man zu einem Set hinzufügen Java Basics - Anfänger-Themen 4
Kumora ArrayIndexOutOfBoundsException bei einem Sortierverfahren Java Basics - Anfänger-Themen 2
I Viereck / Rechteck Prüfung innerhalb einem bestimmten Bereich Java Basics - Anfänger-Themen 2
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
Substring in einem String finden Java Basics - Anfänger-Themen 13
J Fehlerbehandlung an einem Beispiel Java Basics - Anfänger-Themen 8
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
I Innerhalb einem Bild ein Teil austauschen Java Basics - Anfänger-Themen 26
I Dateigröße von einem InputStream oder byte[] bekommen Java Basics - Anfänger-Themen 2
H Compiler-Fehler Klasse in einem Package wird nicht gefunden bzw. akzeptiert Java Basics - Anfänger-Themen 12
S Algorithmus entwicklen, der zu einem gegebenen Datum die Jahreszeit ermittelt Java Basics - Anfänger-Themen 13
B In einem Thread Endlosschleife beenden Java Basics - Anfänger-Themen 19
A Elemente in einem Array Java Basics - Anfänger-Themen 5
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
S Eine Variable in einem Array speichern Java Basics - Anfänger-Themen 5
T Methode, die prüft ob in einem Int-Array maximal 2 Zahlen enthalten sind, die größer als ihr Vorgänger sind Java Basics - Anfänger-Themen 5
berserkerdq2 Wie gebe ich den Pfad zu einer Datei an, die in einem Ordner in Eclipse ist? Java Basics - Anfänger-Themen 1
M Objekt in einem Objekt speichern Java Basics - Anfänger-Themen 9
J Speichern von zwei Variablen durch Auslesen aus einem Numberfield Java Basics - Anfänger-Themen 2
L Gridmuster in einem Array Java Basics - Anfänger-Themen 2
D spezifische Knoten in einem Baum zählen Java Basics - Anfänger-Themen 9

Ähnliche Java Themen

Neue Themen


Oben