Arraylist in andere Klasse leiten und bearbeiten

Redga

Mitglied
Hallo Java-Forum Freunde!
Hoffe sehr dass ihr mir helfen könnt bei dieser Sache.
Ich möchte diese Liste in einer anderen Klasse aufrufen und zusätzliche Einschränkungen einbauen. In diesem Fall sollen nur Salesfloors weitergegeben werden die auch über eine UserId verfügen.


Java:
public static List<Salesfloor> getSalesfloorsForId(final List<Salesfloor> salesfloors, final int salesfloorId) {
      if (salesfloors == null || salesfloors.isEmpty()) {
          return null;
      }
      List<Salesfloor> list = null;
      for (final Salesfloor salesfloor : salesfloors) {
          if (salesfloor.getId().equals(salesfloorId)) {
            if (list == null) {
               list = new ArrayList<Salesfloor>();
            }
            list.add(salesfloor);
          }
      }
      return list;
    }


Meine Idee in der anderen Gruppe:


Java:
    public checkSalesfloorsForId() {
    List<int> salesfloors = getSalesfloorsForId();

    public List<Salesfloors> getSalesfloorsForId (int SalesfloorId,  int costumerId){
            for (final Salesfloor salesfloor : salesfloors) {
            if (costumerId == null || costumer.isEmpty()) {
                throw new DoesNotExistException("No User selected");   
            }else {
            (salesfloor.getId().equals(salesfloorId);{               
             if (list == null) {
             list = new ArrayList<Salesfloor>();
                }
                list.add(SalesfloorId);
                list.add(costumerId);
                }
                return list;
                }
            }
        }   
}


Wie man merkt bin ich noch nicht fit dadrin eine Liste in anderen Klassen aufzurufen. Ich habe allerdings mittlerweile einen echt dicken Schädel und hoffe auf das beste.
 
Ist dir da eine falsche Zeile reingerutscht?
Java:
else {
(salesfloor.getId().equals(salesfloorId);{
 
  • Bei checkSalesfloorsForId fehlt die schließende geschwungene Klammer.
  • checkSalesfloorsForId hat keinen Rückgabewert. Wenn sie nichts zurückgeben soll, musst du void schreiben.
  • Wieso Salesfloors (Klassenname) plötzlich mit s?
  • list ist noch nicht initialisiert.
  • Woher kommt costumer?
  • Auf salesfloors kann nicht zugegriffen werden, da es eine lokale Variable (in der anderen Methode) ist.
  • Bei Variablen vom Typ int kann so etwas nicht gemacht werden:
Java:
if (costumerId == null) {

}

  • Das int is Fehl am Platz:
Java:
List<int> salesfloors = getSalesfloorsForId();
Wenn du int verwenden willst, musst du Integer schreiben. Aber in diesem Fall brauchst du Salesfloor.
 
Zuletzt bearbeitet:
Erstmal Danke für die Hilfe.

Mein Ziel ist es die Methode der ersten Klasse in einer anderen Klasse aufzurufen indem ich noch weitere Bedingungen hinzufüge. Dabei soll die Methode nicht schon in der ersten Klasse verändert werden weil sie auch an anderen Stellen verwendet wird.
Also soll diese nur aufgerufen werden wenn auch ein Kunde vorhanden ist.

Mehr zum Background: Es geht hier um Salesfloors(Verkaufsflächen) und Customer(Kunde). Ein Customer kann mehrere Salesfloors haben.
 
Wie @mihe7 schon sagte, solltest du ohne technisch zu werden (also ohne Wörter wie Methode und Klasse und aufrufen zu verwenden), beschreiben, was du eigentlich willst. Bitte also noch einmal.
Statt quasi zu sagen: "Ich will, dass die Methode in der Klasse aufgerufen wird und dann soll diese Methode aufgerufen werden, ohne die Methode zu verändern", wollen wir so etwas hören: "Ich habe eine Liste von Verkaufsflächen. Nun möchte ich diese Liste nach einer bestimmten ID einer Verkaufsfläche filtern. Und dann möchte ich..."
Also einfach eine fachliche Beschreibung dessen, was dein Programm tun soll.
 
Entschuldigung. Ist mein erster Thread bzgl Java

Ich habe eine Liste von Verkaufsflächen. Nun möchte ich diese Liste nach einer bestimmten ID einer Verkaufsfläche filtern. Das soll aber nur passieren wenn eine Kunden ID vorhanden ist
 
Java:
public class ListeFiltern {
  public static java.util.List<Salesfloor> filterById(
      java.util.List<Salesfloor> list, int salesFloorId) {
    return list
        .stream()
        .filter(sf -> sf.getId().equals(salesFloorId))
        .collect(java.util.stream.Collectors.toList());
  }
  public static java.util.List<Salesfloor> filterByIdIfCustomerId(
      java.util.List<Salesfloor> list, int salesFloorId,
      boolean kundenIdVorhanden) {
    return kundenIdVorhanden
        ? filterById(list, salesFloorId)
        : list;
  }
}
 
Entschuldigung. Ist mein erster Thread bzgl Java
Kein Problem. Solche Rückfragen sind normal, insbesondere wenn man an den Formulierungen sieht, dass der Fragesteller noch am Anfang steht. Das ist auch keineswegs böse gemeint. Vielmehr hilft die fachliche Beschreibung das Problem zu verstehen und ggf. andere Lösungsansätze zu finden. Hinzu kommt, dass jeder die Dinge etwas anders interpretiert.

Das kannst Du z. B. schön hier https://www.java-forum.org/thema/formattierung-im-label.184297/ sehen. Der Fragesteller fragt nach einer Formatierung, wie er sie in der Konsole hat. Das ist schon sehr technisch. Ich interpretierte das so, dass es tatsächlich das ist, was er will -> Fonts setzen. @dzim dagegen interpretiert es so, dass er eigentlich was anderes will -> Grid. Wenn man von der fachlichen Seite das Problem betrachtet, sieht es so aus, als wollte er eine Tabelle -> Table.
 
Super. Danke für die Aufklärung. Ich schätze die Mühen die Ihr euch macht!

Java:
public class ListeFiltern {
  public static java.util.List<Salesfloor> filterById(
      java.util.List<Salesfloor> list, int salesFloorId) {
    return list
        .stream()
        .filter(sf -> sf.getId().equals(salesFloorId))
        .collect(java.util.stream.Collectors.toList());
  }
  public static java.util.List<Salesfloor> filterByIdIfCustomerId(
      java.util.List<Salesfloor> list, int salesFloorId,
      boolean kundenIdVorhanden) {
    return kundenIdVorhanden
        ? filterById(list, salesFloorId)
        : list;
  }
}

Ich probieren ihn gleich morgen früh aus. Danke für die Hilfe
 

Neue Themen


Zurück
Oben