Generieren neuer ID

GarmVanHel

Mitglied
Hy Leute,
ich habe ein Java-Programm mit einem Datensatz von vielen Artikeln.
Jeder Artikel besteht aus :
Medientyp(Album od Film) , ID , Titel , Interpret (bei Alben) , … und noch weitere, die hier nicht relevant sind.​

Ich möchte nun eine neue ID erstellen, welche folgendes Format haben soll:
Typ-Initialien-Titelacrynom
(die alte ID bestand lediglich aus M******, wobei * eine beliebige Zahl ist)

  1. Typ bedeutet. A oder F (von Album bzw Film)
  2. Initialien: Bei Alben sind das die ERSTEN Buchstaben JEDEN Wortes des Interpreten (bspw bei Bruce Springsteen wäre es BS)
  3. Titelacrynom: besteht aus den ersten DREI Buchstaben JEDEN Wortes im Titel

Ich habe etwas von substring oder split() gelesen, wüsste jetzt aber nicht, wie ich das genau umsetzen soll.



Über einen Tipp oder Ansatz würde ich mich sehr freuen :)
 

Thallius

Top Contributor
Ich würde das nicht tun. Daten in der Art zusammenfassen sollte man nur aus gut überlegten Performancegründen.
Warum machst du nicht für jede Information eine Spalte in deine Tabelle und läßt die ID als ganz normale Spalte INT PRIMARY KEY AUTOINCREMENT?

Gruß

Claus
 

GarmVanHel

Mitglied
Lieber Claus, danke für deine Antwort, aber ich möchte das wirklich so machen, wie schon beschrieben.
Von jedem String etwas abschneiden und diese Schnipsel zu einem neuen String zusamenfügen.
Im Endeffekt macht man das ja auch bei einer IBAN so.

Vielleicht hast du ja doch eine Idee?
 

Oneixee5

Top Contributor
Ich würde das nicht machen, da die Eindeutigkeit nicht garantiert ist. Du kannst diese Pseudo-ID gern in einer extra Spalte mitführen aber nicht als DB-ID verwenden. s.Beitrag von Thallius.
 

Tarrew

Top Contributor
Gründe, die dagegen Sprechen wurden ja schon mehrfach genannt.

Trotzdem mal ein Blueprint, wie man deine Beschreibung umsetzen kann:
Java:
public class Test {
    public static void main(String[] args) {

        System.out.println(new Artikel(Medientyp.ALBUM, "Thriller", "Michael Jackson").generateId());
        System.out.println(new Artikel(Medientyp.FILM, "Der Herr der Ringe", "Peter Jackson").generateId());

    }
}

class Artikel {
    private Medientyp medienTyp;
    private String titel;
    private String interpret;

    public Artikel(Medientyp medienTyp, String titel, String interpret) {
        this.medienTyp = medienTyp;
        this.titel = titel;
        this.interpret = interpret;
    }

    public String generateId() {

        StringBuilder sb = new StringBuilder();

        sb.append(medienTyp.getTypKz());
        sb.append("-");

        // An Leerzeichen splitten
        String[] splitted = interpret.split(" ");

        //Ersten Buchstaben jeden Wortes
        for (String s : splitted) {
            sb.append(s.charAt(0));
        }
        sb.append("-");

        sb.append(titel.substring(0, 3));

        return sb.toString();
    }
}

enum Medientyp {
    ALBUM("A"),
    FILM("F");


    private String typKz;

    Medientyp(String typKz) {
        this.typKz = typKz;
    }

    public String getTypKz() {
        return typKz;
    }
}
Enthält noch keine Fehlerbehandlung etc. pp, aber darauf solltest du aufbauen können.

Wenn du wirklich mit einer DB arbeitest und das nicht irgendein Bastel-Projekt ist, solltest du dir aber wirklich was anderes überlegen, wurde ja schon erwähnt ;)
 
Zuletzt bearbeitet:

Oneixee5

Top Contributor
substring-Beispiel:
Java:
       String str= new String("quick brown fox jumps over the lazy dog");
       System.out.println("Substring starting from index 15:");
       System.out.println(str.substring(15));
       System.out.println("Substring starting from index 15 and ending at 20:");
       System.out.println(str.substring(15, 20));
Ausgabe:
Code:
Substring starting from index 15:
jumps over the lazy dog
Substring starting from index 15 and ending at 20:
jump
 

mihe7

Top Contributor
Benenne aber die Spalte um: das ist einfach ein Kürzel. Die IBAN ist dagegen eine ID, weil sie ein Konto identifiziert.
 

Thallius

Top Contributor
Ich sehe auch einfach keinen Vorteil in dieser id. Was willst du denn mit dieser machen? Wenn du die umbedingt so haben willst, dann kannst du die doch genauso gut beim Query mit einem CONCAT() generieren. Nochmal: es macht überhaupt keinen Sinn so eine id in einer Datenbank zu speichern ob du das nun willst oder nicht.
 

GarmVanHel

Mitglied
Thallius ich sehe darin auch keinen Sinn, aber wenn ich all meine Aufgaben nach einem Sinn hinterfragen würde *puh* Ich tue es einfach... Versuche es zumindest....und das als Java Anfänger. Du kannst dir gar nicht vorstellen, wie mich das an meine Grenzen bringt und wie viele Stunden ich schon an diesem Blödsinn sitze, aber was getan werden muss, wird getan.
 

mrBrown

Super-Moderator
Mitarbeiter
Bevor noch Vorschläge kommen, wie man das mit SQL umsetzt - wird hier überhaupt eine SQL-Datenbank benutzt? o_O

Du kannst dir gar nicht vorstellen, wie mich das an meine Grenzen bringt und wie viele Stunden ich schon an diesem Blödsinn sitze, aber was getan werden muss, wird getan.
Na der Sinn ist, dass dich solche Aufgaben irgendwann nur noch Minuten kosten und so nebenbei erledigt sind :p
 

GarmVanHel

Mitglied
Bevor noch Vorschläge kommen, wie man das mit SQL umsetzt - wird hier überhaupt eine SQL-Datenbank benutzt? o_O

Nein wird hier nicht. Ich frage mich sowieso gerade, wie hier das Thema Datenbank aufkommt. Ich hab doch von einem Datensatz gesprochen und , oh sorry, vielleicht nicht selbsterklärend, dieser ist eine Klasse in meinem Programm ;) String [570][9] um genau zu sein. Sorry für die etwas ungenaue Anfangsaussage. Aber das sollte auch nicht der springende Punkt meines Problems sein :)

Ja das möchte ich doch aber staaaaaark hoffen, dass ich irgendwann nur noch Minuten dran sitze ^^
 

Thallius

Top Contributor
Naja, ist doch egal. Hier könnten 100 Leute die als Senior Software Developer arbeiten sagen das das blödsinn ist, der TO will es nicht hören.
Ich frage mich nur immer warum jemand hier was fragt, wenn er die Antworten eh nicht annimmt weil sie nicht seinen Vorstellungen entsprechen....
 

mrBrown

Super-Moderator
Mitarbeiter
- er muss eine vorgegebene Aufgabe Lösen
- es geht um Java, nicht mal mit viel Wunschdenken kann man SQL rauslesen


* ein „Senior Software Entwickler“ möchte, dass er sowohl die Aufgabenstellung ignoriert als auch die geforderte Sprache und beschwert sich dann drüber, dass der TO das nicht so macht



Ist wohl das Äuqivalent zu „Kunde möchte eine Lagerverwaltung auf Deutsch“ und „Kunde bekommt eine Heizungssteuerung auf Suaheli“
 

mihe7

Top Contributor
- er muss eine vorgegebene Aufgabe Lösen
Ich kenne seine Aufgabe nicht, sondern lese nur einen Wunsch, der so nicht erfüllbar ist.

Ist wohl das Äuqivalent zu „Kunde möchte eine Lagerverwaltung auf Deutsch“ und „Kunde bekommt eine Heizungssteuerung auf Suaheli“
Nö, wenn ich den TO als meinen Kunden betrachte, müsste ich ihm sagen, dass das nicht geht. Das wäre das Äquivalent zum Kundenwunsch: ich möchte ein Auto, das mich von A nach B bringt, aber keine Energie verbraucht.
 

GarmVanHel

Mitglied
Aber ich nehme die Antworten doch an, oder verstehe ich euch gerade falsch? :( Ich bin über jede Hilfe dankbar. Ich hab das bloß mit der Bezeichnung (Kürzel-ID) nicht so ernte genommen, da diese so vorgegeben ist. Schulterzuck und sry für irgendwelche Missverständnisse.
Lg und danke nochmal für alles
 

mihe7

Top Contributor
Aber ich nehme die Antworten doch an, oder verstehe ich euch gerade falsch?
Mach Dir keinen Kopf, das ist alles nur etwas unglücklich gelaufen.

Ich muss meine Aussage (auch die Antwort vorhin an @mrBrown) auch relativieren: man kann in der Form keine ID für Artikel generieren, sehr wohl aber für Datensätze. Die Konsequenz ist halt, dass das Ergebnis ziemlich unbrauchbar ist.
 

Thallius

Top Contributor
- er muss eine vorgegebene Aufgabe Lösen
- es geht um Java, nicht mal mit viel Wunschdenken kann man SQL rauslesen


* ein „Senior Software Entwickler“ möchte, dass er sowohl die Aufgabenstellung ignoriert als auch die geforderte Sprache und beschwert sich dann drüber, dass der TO das nicht so macht

Sorry aber wo steht das er eine Aufgabe bekommen hat? Im opening steht „er hat“ und „er möchte“. Da bin ich von einer selbst gestellten Aufgabe ausgegangen. Und in dem Fall wäre das Konzept eben Mist.
Wenn er knzeptionellen Mist als Aufgabe bekommt, dann sollte der Auftraggeber sich vielleicht mehr Mühe geben seine Lerninhalte mit sinnvollen Aufgaben zu vermitteln. Aber dafür kann natürlich der TO nichts.

Von SQL habe ich nirgendwo gesprochen. Man kann auch einen QUERY (eine Abfrage) aus einer Liste machen und auch strings die Attribute eines Objekts sind kann man mit CONCAT verbinden, auch wenn das in Java dann eben StringBuilder heißt.

Wenn mir ein Senior Software Entwickler sagt, mein Konzept taugt nichts, dann werde ich darüber nachdenken und nicht einfach sagen „mach das so weil ich als Project Manager das so will“.
 

mrBrown

Super-Moderator
Mitarbeiter
Sorry aber wo steht das er eine Aufgabe bekommen hat? Da bin ich von einer selbst gestellten Aufgabe ausgegangen.
Erst nach deinem zweiten SQL-Beitrag, aber immer noch bevor du dich drüber aufregst, dass er deine Vorschläge nicht annimmt... (und direkt SQL wäre selbst bei einer selbst-gestellten Aufgabe Unsinn)


Und in dem Fall wäre das Konzept eben Mist.
Wenn er knzeptionellen Mist als Aufgabe bekommt, dann sollte der Auftraggeber sich vielleicht mehr Mühe geben seine Lerninhalte mit sinnvollen Aufgaben zu vermitteln. Aber dafür kann natürlich der TO nichts.
Die Aufgabe kann in dem jeweiligen Kontext vollkommen sinnvoll sein (das Problem löst sich übrigens schon, wenn man aus "ID" "Kürzel" macht.)
Solche Aufgaben sind halt das Äquivalent zu 'bis zur zehnten Klasse gibts keine Wurzel aus negativen Zahlen'.

Wenn mir ein Senior Software Entwickler sagt, mein Konzept taugt nichts, dann werde ich darüber nachdenken und nicht einfach sagen „mach das so weil ich als Project Manager das so will“.
Rein aus Interesse, bist du Senior Dev?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I QR code in Java selber generieren Java Basics - Anfänger-Themen 5
M Zufallszahl generieren mit einer linken und rechten Grenze Java Basics - Anfänger-Themen 3
JavaBeginner22 Java 2 Zufalls zahlen generieren. Java Basics - Anfänger-Themen 11
Marlena Bauer IBAN generieren (Deutschland) aus Abfrage von BLZ und Kontonummer? Java Basics - Anfänger-Themen 31
H Zufallszahlen generieren Java Basics - Anfänger-Themen 5
S Personalnummer automatisch generieren Java Basics - Anfänger-Themen 11
J Zufallszahlen generieren und Werte vergleichen Java Basics - Anfänger-Themen 3
Gaudimagspam Nummern generieren Array Java Basics - Anfänger-Themen 4
W Erste Schritte Ein Spielfeld aufbauen/generieren Java Basics - Anfänger-Themen 1
J Fehler beim generieren von 4 Zufallszahlen Zahl doppelt ist eigentlich ausgeschlossen Java Basics - Anfänger-Themen 9
B Liste von Tagen generieren ab einem bestimmten Datum und Endedatum Java Basics - Anfänger-Themen 4
S Aus gleichverteilte Zufallszahlen normalverteilte Zufallszahlen generieren ? Java Basics - Anfänger-Themen 1
J Erste Schritte Lottozahlen richtig generieren. Java Basics - Anfänger-Themen 12
SchmidiMC Methoden Random in Methode neu generieren lassen Java Basics - Anfänger-Themen 1
3 Zufalls-Zahlen aus ArrayList generieren & auslesen Java Basics - Anfänger-Themen 6
T Hash von doubles generieren Java Basics - Anfänger-Themen 5
I String teilen und zwei Wörter generieren Java Basics - Anfänger-Themen 1
D Methoden Listen generieren Java Basics - Anfänger-Themen 4
T Javadoc in Eclipse generieren Java Basics - Anfänger-Themen 1
S JLabels generieren lassen Java Basics - Anfänger-Themen 1
fLooojava Passwort generieren - kleines Programm Java Basics - Anfänger-Themen 15
1 String zu int generieren Java Basics - Anfänger-Themen 7
F Vererbung Sonnensystem mit Planeten generieren Java Basics - Anfänger-Themen 11
B Erste Schritte Möglichkeiten generieren Java Basics - Anfänger-Themen 25
I Eindeutige Stringvariablen in Schleife generieren Java Basics - Anfänger-Themen 4
S Gerade bzw. Ungerade Zufallszahl generieren Java Basics - Anfänger-Themen 5
K Java source code generieren Java Basics - Anfänger-Themen 5
E einfaches Schachbrett generieren Java Basics - Anfänger-Themen 9
A JButtons dynamisch generieren mit verschiedenen actionhandlern Java Basics - Anfänger-Themen 6
J Formular generieren Java Basics - Anfänger-Themen 7
K Wie kann ich aus jar Dateien wieder normale Klassen generieren? Java Basics - Anfänger-Themen 7
R mit GregorianCalendar Datum generieren Java Basics - Anfänger-Themen 3
P Zufallszahlen fuer Lotto generieren Java Basics - Anfänger-Themen 28
K Methode Passwort generieren Java Basics - Anfänger-Themen 10
M For-Schleifen dynamisch generieren? Java Basics - Anfänger-Themen 10
G HTML Seite generieren Java Basics - Anfänger-Themen 2
E Buttons in Android generieren? Java Basics - Anfänger-Themen 4
H HTML Code generieren Java Basics - Anfänger-Themen 9
Houly Integer Zahlen generieren Java Basics - Anfänger-Themen 11
T Zeichenkette generieren lassen Java Basics - Anfänger-Themen 6
A Zufallszahlen generieren Java Basics - Anfänger-Themen 2
HaukeG Java Klasse generieren Java Basics - Anfänger-Themen 3
M Javadoc generieren Java Basics - Anfänger-Themen 4
F sudoku generieren Java Basics - Anfänger-Themen 16
G zufällige zahlen von x bis y generieren Java Basics - Anfänger-Themen 5
G FileOutputStream generieren Java Basics - Anfänger-Themen 2
C 10 zeichen password generieren Java Basics - Anfänger-Themen 16
N Eindeutige Dateinamen generieren Java Basics - Anfänger-Themen 17
M Aus WSDL Java-Code generieren. Java Basics - Anfänger-Themen 1
halla Zufallswert zwischen geg. Unter- und Obergrenze generieren Java Basics - Anfänger-Themen 3
O Variabelnamen dynamisch generieren Java Basics - Anfänger-Themen 3
D HTML code in java generieren. Java Basics - Anfänger-Themen 6
B Bericht generieren, Daten in Word/Excek exportieren Java Basics - Anfänger-Themen 5
G javadoc generieren? Java Basics - Anfänger-Themen 3
G Mehrere Objekte in Schleife generieren Java Basics - Anfänger-Themen 6
B Kann man in Java Variablen dynamisch generieren? Java Basics - Anfänger-Themen 3
G XML als byteArray generieren Java Basics - Anfänger-Themen 4
C Aus ein Image-Objekt einen InputStream generieren? Java Basics - Anfänger-Themen 6
B for- und while anweisung - 2er Potenzen generieren Java Basics - Anfänger-Themen 6
Y Dynamisch Variablennamen generieren? Java Basics - Anfänger-Themen 9
N Probleme beim generieren von Objekten Java Basics - Anfänger-Themen 2
I Wortkette in umgekehrter Rheinfolge + in neuer Zeile ausgeben Java Basics - Anfänger-Themen 4
I Historisierung - Alter Wert, Neuer Wert... wie speichern? Java Basics - Anfänger-Themen 44
Csircc Neuer Array mit geringerer Länge und selben werten. Java Basics - Anfänger-Themen 2
G unklares Verhalten nach Instanzierung neuer Klasse Java Basics - Anfänger-Themen 3
D Neuer Start- und Endpunkt kann nur an bereits vorhandenen Start- oder Endpunkt anliegen Java Basics - Anfänger-Themen 2
J ComboBox mittels neuer Methode befüllen Java Basics - Anfänger-Themen 3
J Array mit neuer Methode übergeben Java Basics - Anfänger-Themen 5
R Serialport auslesen bei neuer Nachricht Java Basics - Anfänger-Themen 12
N JFrame-Objekt in neuer Methode nicht verfügbar? Java Basics - Anfänger-Themen 3
B for-schleife innerhalb neuer Methode Java Basics - Anfänger-Themen 5
V Kein neuer Thread trotz Runnable Java Basics - Anfänger-Themen 4
F Spiel geht nicht mehr nach neuer Klasse Sound Java Basics - Anfänger-Themen 18
V Datei in Ordner auslesen -> neuer Ordnername Java Basics - Anfänger-Themen 7
K Kreis mit neuer Position zeichnen Java Basics - Anfänger-Themen 3
A Hinzufügen neuer Pakete Java Basics - Anfänger-Themen 5
K Nach x Sekunden neuer Text/Zeile Java Basics - Anfänger-Themen 11
J punkte verschwinden beim neuzeichnen neuer punkte Java Basics - Anfänger-Themen 11
K Datei öffnen, lesen, bearbeiten, in neuer datei speichern Java Basics - Anfänger-Themen 12
S StringBuffer in Datei - Problem mit neuer Zeile Java Basics - Anfänger-Themen 2
S neuer String zur jedem Teil von List Java Basics - Anfänger-Themen 2
J neuer Zeilenumbruch in Datei Java Basics - Anfänger-Themen 7
G Thread mit neuer methode Java Basics - Anfänger-Themen 6
C eifügen neuer Menüpunkte zur Laufzeit Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben