if-Abfrage bei ArrayList-Methodenaufrufen - Wie löse ich das?

Wuast

Bekanntes Mitglied
Mahlzeit,

kann ich bei einer if-Abfrage eine Ausgabe / Objekterzeugung / wasAuchImmer davon abhängig machen, ob eine bestimmte Methode bei einer ArrayList aufgerufen wurde? Mir ist nicht so ganz klar, wie ich das in der if-Abfrage sinnlich und von syntaktisch formulieren müsste.

Also konkret: Die Array List soll über eine Methode entweder erweitert, oder um ein Element einer bestimmten Position verringert werden. Je nach Aktion soll eine andere Push-Nachricht an die Observer gesendet werden.

Mein Code dazu bisher:
Java:
import java.util.ArrayList;
import java.util.Scanner;

public class Rechnungsliste implements RechnungslisteInterface {

  
    ArrayList <Integer> rechnungsIds = new ArrayList <Integer> ();
    ErzeugeId erzeugeId = ErzeugeId.getInstance();        //Die Klasse spare ich hier aus, getNextId erzeugt eine neue Zufallszahl
  
    public void arrayListVerwalten() {
  
    rechnungsIds.add(erzeugeId.getNextId());
    rechnungsIds.add(erzeugeId.getNextId());
    rechnungsIds.add(erzeugeId.getNextId());
  
    }
  

    //toString ...

  
     //Methoden zur Veränderung d. ArrayList --> beobachtbares Ereignis
     public void hinzufuegenNeuerId() { 
         rechnungsIds.add(erzeugeId.getNextId());
      
     }
  

     public void entfernenBestehenderId() {
      
         System.out.println("Position zu entfernender ID eingeben");
         int sc = new java.util.Scanner(System.in).nextInt();
      
         rechnungsIds.remove(sc);
     }
  

package designPattern;

import java.util.ArrayList;

public interface RechnungslisteInterface {
  
    public abstract void hinzufuegenNeuerId(BeobachterInterface beobachter);
  
    public abstract void entfernenBestehenderId(BeobachterInterface beobachter);
  
    public abstract void informiereBeobachter();
  
}
  
  
package designPattern;

public interface BeobachterInterface {

    public void sendeBenachrichtung ();

}

  
    package designPattern;

import java.util.ArrayList;

public class Beobachter_1 implements BeobachterInterface {

  
    private ArrayList <Integer> rechnungsliste;
  
    ErzeugeId erzeugeId = ErzeugeId.getInstance();
  
  
    public Beobachter_1 (ArrayList <Integer> rechnungsliste) {
    this.rechnungsliste = rechnungsliste;
    }

  
    @Override
    public void sendeBenachrichtung() {
        int letzterIndex = rechnungsliste.size() - 1;
        int letztesElement = rechnungsliste.get(letzterIndex);
  
    /* nach dem Motto
    if(methode hinzufuegenNeuerId bei rechnungsliste) {
    System.out.println("Neue ID erzeugt: " + letztesElement); 
    }
    if(methode entfernenBestehenderID bei rechnungsliste) {
    System.out.println("ID " + int der entfernten Position + " wurde entfernt.")
    } */
  
    }
  
}
 

Neumi5694

Top Contributor
"ob eine bestimmte Methode bei einer ArrayList aufgerufen wurde?"
Bitte was?

Du kannst in eine if-Abfrage alles reinpacken, die ist das Grundgerüst für sämtliche Logik. Aber du musst erst mal formulieren können, was du prüfen willst.

Wie kann man denn "bei" einer ArrayList irgendwas aufrufen?

Für das, was du in "konkret" beschreibst, brauchst du keine Abfrage. Die Methoden sollen einfach das machen, wozu sie da sind. Unter "konkret" steht nichts von einer Bedingung, die du abfragen müsstest.

Edit:
Oh ... ich seh's gerade im auskommentierten Programmteil ... autsch!
Diese Ausgabe gehört ganz ohne Bedingung in die Methode hinzufuegenNeuerId rein.
 

Wuast

Bekanntes Mitglied
"ob eine bestimmte Methode bei einer ArrayList aufgerufen wurde?"
Bitte was?

Du kannst in eine if-Abfrage alles reinpacken, die ist das Grundgerüst für sämtliche Logik. Aber du musst erst mal formulieren können, was du prüfen willst.

Wie kann man denn "bei" einer ArrayList irgendwas aufrufen?

Für das, was du in "konkret" beschreibst, brauchst du keine Abfrage. Die Methoden sollen einfach das machen, wozu sie da sind. Unter "konkret" steht nichts von einer Bedingung, die du abfragen müsstest.

Edit:
Oh ... ich seh's gerade im auskommentierten Programmteil ... autsch!
Diese Ausgabe gehört ganz ohne Bedingung in die Methode hinzufuegenNeuerId rein.
keine Ahnung was mein Hirn da zusammengefurzt hat :D
in diesem Fall klar.
ich muss noch mal in mich gehen was ich eigentlich wollte oder ob es nur mal wieder eine Blockade war... danke trotzdem schonmal für die Rückmeldung :s
 

Wuast

Bekanntes Mitglied
Edit:
Oh ... ich seh's gerade im auskommentierten Programmteil ... autsch!
Diese Ausgabe gehört ganz ohne Bedingung in die Methode hinzufuegenNeuerId rein.
Hallo, ich nochmal.

Vielleicht habe ich auch die Observer-Geschichte noch nicht gerafft aber ist es nicht so, dass ich eine Methode (in diesem Fall als push-Benachrichtung) habe und das DIESE Methode den Beobachter informieren soll? Was soll der Beobachter sonst mit der Methode anfangen, wenn sie leer bleibt?
Und dann war mein Gedanke: Je nachdem, was für ein Ereignis eingetreten ist, soll der Beobachter doch eine andere Info bekommen, eben z.B. "neue ID mit der Nummer XXX wurde hinzugefügt" oder "... wurde entfernt". Sowas kommt doch dann, soweit ich hier bisher gelernt habe (zu haben glaubte) nicht in die Methode, welche die ID hinzufügt.

Und dann zurück zu meinem Problem: Wie mache ich deutlich, welches Ereignis welche Push-Nachricht erzeugt. Deswegen war ich gedanklich bei der IF-Abfrage.

Hoffe, das hier nochmal jemand reinschaut und mich erleuchtet :)

Danke
 

mrBrown

Super-Moderator
Mitarbeiter
Ob und eventuell auch was sich geändert hat weiß doch nur die Methode, die die Änderung durchführt, entsprechend muss die auch das informieren der Beobachter triggern und kann dann, wenn das Interface das zulässt, Informationen über die Änderung schicken.

Wenn das Interface entsprechend erweitert wird kann man da durchaus ein "neue ID mit der Nummer XXX wurde hinzugefügt" schicken, entsprechend verpackt in einem Objekt.
 

KonradN

Super-Moderator
Mitarbeiter
Oberserver Pattern: https://de.wikipedia.org/wiki/Beobachter_(Entwurfsmuster)

Wenn Du da das Schaubild anschaust, dann ist wichtig:
  • Du hast ein Subjekt, das wird beobachtet. (Subjekt / KonkretesSubjekt muss man nicht zwingend trennen).
  • Dazu gibt es dann Beobachter. Dies ist meist ein funktionales Interface. Diese Beobachter kann das Subjekt dann speichern.
  • Konkrete Beobachter implementieren dieses Interface oder - da es funktional ist - geben eine Methodenreferenz oder Lambda Expression an, das dann irgendwas macht.

Das Subjekt hat also:
a) Eine Liste mit Beobachtern incl. Methoden, damit sich da Beobachter eintragen können.
b) Immer wenn das Subjekt die Beobachter informieren will, dann geht man einfach die Liste mit den Beobachtern durch und ruft auf jedem diese Methode auf.

Das ist schon das ganze Geheimnis bei dem Observer Pattern.

Wie mache ich deutlich, welches Ereignis welche Push-Nachricht erzeugt.
Du kannst mehrere unterschiedliche Beobachter haben. Das wäre dann bei UI Elementen z.B. die unterschiedlichen Events wie Mouse Events, Key Events u.s.w.
Du kannst bei Dir also Beobachter haben für: AddedElement, RemovedElement, ...

Oder Du kannst das auch über Parameter machen. Dann bekommt der Beobachter in der Methode Parameter, die diese Information angeben.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
R Abfrage von Variablen in Unterklassen einer ArrayList Java Basics - Anfänger-Themen 9
Nitrogames Variablen Variable aus JOptionPane Abfrage in Array einfügen Java Basics - Anfänger-Themen 4
L If Abfrage Java Basics - Anfänger-Themen 4
S Best Practice Fragen zu Projektstruktur einer Datenbank-Abfrage-App (MVC) Java Basics - Anfänger-Themen 13
B Automatisierte Ausgabe (Schleife, If-Abfrage?) Java Basics - Anfänger-Themen 24
I ResultSet aus meiner SQL-Abfrage in einem JTextfield ausgeben. Java Basics - Anfänger-Themen 1
X Enum Abfrage ohne if, for, while oder switch Java Basics - Anfänger-Themen 21
G Taschenrechner ergibt Fehler in if-Abfrage Java Basics - Anfänger-Themen 6
S Interaktive Abfrage, Hilfe mit Schleifen! Java Basics - Anfänger-Themen 6
P Amazon SQS abfrage Java Basics - Anfänger-Themen 1
Marlena Bauer IBAN generieren (Deutschland) aus Abfrage von BLZ und Kontonummer? Java Basics - Anfänger-Themen 31
M Abfrage j/n und Bildschirm löschen Java Basics - Anfänger-Themen 3
S Und-Abfrage mit mehreren Ungleich-Operatoren Java Basics - Anfänger-Themen 17
O if Abfrage erkennt String nicht Java Basics - Anfänger-Themen 1
NeoLexx Abfrage mit instanceof führt zu unerwarteten Wert Java Basics - Anfänger-Themen 9
N Bedinugng If-Abfrage wird nie erfüllt Java Basics - Anfänger-Themen 4
L boolean-Abfrage enumeration Java Basics - Anfänger-Themen 3
Y Methoden Wie kann ich eine if-Abfrage bei Setters bauen? Java Basics - Anfänger-Themen 6
S Streams - Abfrage absteigend sortieren Java Basics - Anfänger-Themen 11
F If Abfrage gibt falsches Ergebnis.... Java Basics - Anfänger-Themen 6
F POST-Request mit json - Abfrage mit Java Java Basics - Anfänger-Themen 2
C Javafunktion zur Abfrage eines Quellcodes Java Basics - Anfänger-Themen 15
A JOPtionPaneOptionDialog Abfrage welcher Button gedrückt wurde? Java Basics - Anfänger-Themen 8
B Folgende Abfrage dynamisch programmieren? Java Basics - Anfänger-Themen 8
G if Abfrage: Nicht jeder Fall berücksichtigt Java Basics - Anfänger-Themen 2
I Nur auf Abfrage von einer Text Datei einlesen Java Basics - Anfänger-Themen 11
J Erste Schritte if Abfrage von JButton in 2. Klasse Java Basics - Anfänger-Themen 27
S If Abfrage nur mit bestimmter Initialisierung? Java Basics - Anfänger-Themen 8
Z Boolean Abfrage in einer for each Schleife Java Basics - Anfänger-Themen 2
deatzi Variable aus If Abfrage später nutzen Java Basics - Anfänger-Themen 4
C Instanz einer Klasse während if-Abfrage erzeugen und bei zweiter if-Abfrage wiederverwenden Java Basics - Anfänger-Themen 6
S Backspace Abfrage funktioniert nicht Java Basics - Anfänger-Themen 4
F Interface JFrame mit if-Abfrage automatisch schließen lassen? Java Basics - Anfänger-Themen 3
G Passwort und Passwort wiederholen in if-Abfrage vergleichen Java Basics - Anfänger-Themen 15
P Altklausur: Abfrage der Summe Java Basics - Anfänger-Themen 9
N Methoden Attribut Abfrage eines anderen Objektes Java Basics - Anfänger-Themen 36
D MySQL Abfrage in JTable speichern Java Basics - Anfänger-Themen 43
D SQL Abfrage anpassen Java Basics - Anfänger-Themen 17
H For-Schleife innerhalb If-Abfrage? Java Basics - Anfänger-Themen 3
F Abfrage ob Eingabe eine Zahl ist Java Basics - Anfänger-Themen 3
O Datentypen Volle 16 Bit eines Short für flags Abfrage nutzen Java Basics - Anfänger-Themen 11
S Input/Output Doppelte Input-Abfrage Java Basics - Anfänger-Themen 3
S Input/Output Programm läuft nach input-Abfrage nicht weiter. Java Basics - Anfänger-Themen 2
M Variablen Eine etwas andere if Abfrage ! Java Basics - Anfänger-Themen 10
H if-Abfrage, ungleich und falscher true Wert? Java Basics - Anfänger-Themen 11
F Ja Nein Abfrage und andere Probleme Java Basics - Anfänger-Themen 5
OlafHD Fehler Bei der if Abfrage Java Basics - Anfänger-Themen 5
quecksilver if-Abfrage in main ausführen Java Basics - Anfänger-Themen 4
D if-Abfrage Java Basics - Anfänger-Themen 12
J Abfrage für Programmwiederholung Java Basics - Anfänger-Themen 2
K Alternative zur If-Abfrage Java Basics - Anfänger-Themen 3
M Java als Webanwendung mit Datenbank abfrage Java Basics - Anfänger-Themen 3
D Abfrage ob Variableninhalt korrekt Java Basics - Anfänger-Themen 5
W Vergleich mit If-Abfrage nur für Zahlen bis 07 möglich - Warum? Java Basics - Anfänger-Themen 7
D Operatoren IF Abfrage liefert falsches Ergebnis Java Basics - Anfänger-Themen 4
X Ja nein abfrage? Java Basics - Anfänger-Themen 9
A Erste Schritte Problem bei meiner if-Abfrage! Java Basics - Anfänger-Themen 5
M Enum-Variabel-Abfrage funktioniert nicht? Java Basics - Anfänger-Themen 2
S Java Counter: nur 1 mal hochzählen auch wenn Abfrage mehrmals zutrifft. Java Basics - Anfänger-Themen 1
E Erste Schritte [Noob-Frage] Meine If-Abfrage macht nicht, was sie soll... Java Basics - Anfänger-Themen 2
C Abfrage nach einem Bild im Array Java Basics - Anfänger-Themen 9
A Key Event - Abfrage von 2 gedrückten Tasten Java Basics - Anfänger-Themen 6
T Klasse für Google-Abfrage Java Basics - Anfänger-Themen 9
Z If abfrage - Minimum 0 Java Basics - Anfänger-Themen 9
J Abfrage versetzen Java Basics - Anfänger-Themen 2
D Methoden Abfrage ob ein Wert bereits vorhanden ist Java Basics - Anfänger-Themen 1
thet1983 if() Abfrage Java Basics - Anfänger-Themen 2
A charAt(x)-Abfrage lässt bei Strings<x das Pgrogramm abstürzen. Kann man das verhindern? Java Basics - Anfänger-Themen 4
Uzi21 if - else Abfrage Java Basics - Anfänger-Themen 6
T Index-Abfrage von Pi Java Basics - Anfänger-Themen 5
H Erste Schritte If Abfrage Java Basics - Anfänger-Themen 3
B If Abfrage mit Passwort und Username Java Basics - Anfänger-Themen 2
U einlesen, abfrage Java Basics - Anfänger-Themen 25
T SQL Abfrage Läuft nicht Java Basics - Anfänger-Themen 5
N Probleme mit ActionListener und Logischer Abfrage Java Basics - Anfänger-Themen 4
F Erste Schritte IF-Abfrage fehlerhaft Java Basics - Anfänger-Themen 9
O Downloaden: Trotz If Abfrage wird Datei heruntergeladen Java Basics - Anfänger-Themen 2
D jProgressBar soll bei 100% sein wenn sql Abfrage inkl. jTable schreiben fertig ist... Java Basics - Anfänger-Themen 5
H if-Abfrage double wert Java Basics - Anfänger-Themen 5
M Erstes Prog. OS Abfrage Java Basics - Anfänger-Themen 9
I Einlese Abfrage zweier Variablen in einem Fenster Java Basics - Anfänger-Themen 6
B Boolean abfrage Java Basics - Anfänger-Themen 3
D Variablen Rücksprung nach If Abfrage Java Basics - Anfänger-Themen 16
T If- Abfrage Java Basics - Anfänger-Themen 8
P Taschenrechner , IF-Abfrage Java Basics - Anfänger-Themen 12
D if-Abfrage Java Basics - Anfänger-Themen 6
G Einfache if-Abfrage der Main-Argumente Java Basics - Anfänger-Themen 3
C If abfrage zu getBackground Java Basics - Anfänger-Themen 2
T abfrage eines Integer Array s Java Basics - Anfänger-Themen 5
feardorcha boolean array false - true - Abfrage Java Basics - Anfänger-Themen 10
G Adminrechte abfrage Java Basics - Anfänger-Themen 5
S Abfrage Objekt-Array nach Datentypen Java Basics - Anfänger-Themen 6
R If-Abfrage, || funktioniert nicht Java Basics - Anfänger-Themen 4
S TabbedPane: nach Abfrage oldTab selektieren Java Basics - Anfänger-Themen 5
B Abfrage mittels Variable vereinfachen Java Basics - Anfänger-Themen 6
C Treffer Abfrage Java Basics - Anfänger-Themen 19
M nach jar export keine db abfrage möglich Java Basics - Anfänger-Themen 2
T Datenbank Abfrage Exception Null Java Basics - Anfänger-Themen 2
J Erste Schritte Im Tante-Emma-Laden mehrere Artikel kaufen mit if-Abfrage Java Basics - Anfänger-Themen 24
I Threads If-Abfrage vor kritischem Abschnitt Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben