Bestimmte Inhalte aus ArrayList 1 in ArrayList 2 kopieren

azo91

Mitglied
Hallo zusammen,

ich habe momentan ein absolutes Blackout und benötige eure Hilfe.
Ich habe zwei zweidimensionale Arraylisten.
Array 1 enthält auf dem Index 0 die Werte CPU und Hardware, Array 2 hingegen CPU und NULL.
Da die ersten Dimensionen übereinstimmen, soll aus Array 1 der Wert Hardware für den NULL-Wert getauscht werden, umso die zweite Dimension des Arrays zu füllen.
Sind die jeweils ersten Elemente nicht übereinstimmend, so soll das erste Array weiterdurchlaufen werden, bis ein passendes Element gefunden worden ist. Wenn nicht, dann springe zum nächsten Element des zweiten Arrays und wiederhole diesen Schritt.

Folgenden Code habe ich für diese Sortierung:
Java:
public static List<Material> compilenewList(List<Material> list, List<Material> list2) {

    int i = 0;
  
        while(i < list2.size()) {
            int j = 0;
          
            while( j < list.size()) {
                if(list.get(j).getname() == list2.get(i).getname()) {
                    list2.get(i).setBezeichnung(list.get(i).getbezeichnung());
                }else{
                    j++;
                }
        }
        i++;  
    }

Ist mein Ansatz grundlegend erstmal richtig oder liegt hier schon das Problem?
 
Ich nehme an "name" aus der Klasse "Material" ist ein String. Strings sollten mit "equals" verglichen werden, nicht mit "==".
 
Ich habe es auch etwas kompliziert formuliert.
Ich habe eine Liste x, die eine Exceltabelle mit zwei Spalten wobei nur die erste Spalte gefüllt ist. In der Liste y ist diese zweite Spalte allerdings mit Werten gefüllt. Sobald ich nun eine Übereinstimmung von Liste x mit y habe, soll der zweite Wert aus der Y-Liste in die zweite Spalte der X-Liste eingetragen werden und das nächste Element der X-Liste überprüft werden. Kommt das verständlicher rüber?
 
Die Problemstellung habe ich schon verstanden 😉
Hast du dir schon mal auf der Konsole ausgeben lassen was verglichen wird bzw. welche Werte übernommen werden?
Den Debugger schon verwendet?
 
Wird Zeit fürn Feierabend. ich habs mal mit ner For-Schleife probiert und deinen equals Tipp verwendet. Siehe da, es funktioniert! Ich lass den Code mal hier, muss es morgen nochmal validieren, aber soweit schonmal danke für deine Hilfe 🙂
Code:
public static List<Material> compilenewList(List<Material> list, List<Material> list2) {

for(int i = 0; i < list2.size(); i++) {
    for(int j = 0; j < list.size(); j++) {
        if(list2.get(i).getname().equals(list.get(j).getname())) {
            list2.get(i).setBezeichnung(list.get(j).getbezeichnung());
        }
    }
   
   
}
 
Der Fehler bei deiner while-Schleifen Variante war/ist das du die Variable "j" nur im else-Block erhöhst. Du musst sie aber immer erhöhen 😉
 

Neue Themen


Zurück
Oben