Zwei Listen vergleichen

doktordoom

Mitglied
Guten Abend,
aktuell versuche Ich zwei Listen siehe unten zu vergleichen. Die zweite Liste besteht aus Objecten von einer Klasse.
Die Klasse steht für die Mitarbeiter, diese haben logisch bestimmte Eigenschfaten. Wie z.B Mitarbeitername.
Diesen Mitarbeitername gibt es in der List2 von Objekten, aber auch in der List1.

Aktuell habe ich noch kein Ansatz gefunden der funktional ist.

Java:
List<List<String>> List1 = new ArrayList<List<String>>();

List<class> List2 = new ArrayList<>();

Class.List2.stream().anyMatch(List1::contains);
 

Neumi5694

Top Contributor
Wichtige Frage: Wann genau gelten 2 Listen als gleich?
Wenn sie die gleichen Elemente haben? Wenn alle Namen in Liste 2 in einem Objekt von Liste1 auftauchen?
Was, falls der Name eines Mitarbeiters aus Liste1 in Liste2 doppelt vorkommt?
Was, falls der Name eines Mitarbeiters aus Liste1 in Liste 2 gar nicht vorkommt?

ich gehen jetzt grad mal davon aus, dass jeder Name in Liste 1 eindeutig ist.
Wenn es eine 1:1 Übereinstimmung braucht, dann fang als erstes damit an, doppelte Einträge aus Liste2 rauszufiltern.
Dann vergleich die Listenlänge, die muss gleich sein. Ist sie das nicht, dann erübrigt sich alles weitere.
Da man nun sowohl in Liste1 als auch Liste2 eindeutige Namen hat, kann man mit einem Stream und allMatch prüfen, ob es für jeden Eintrag aus Liste2 einen passenden Eintrag in Liste1 gibt, so etwa
namesList.stream().allMatch(name -> list1.stream().anyMatch(p.getName().equals(name)));
oder andersrum
list1.stream().map(Person::getName).allMatch(list2::contains);


ps: Deine Datenmodelle sind hier nicht wirklich sinnvoll. Fang mal damit an, die Klasse zu definieren, die einen Mitarbeiter beschreibt.
"Objecten von einer Klasse" ... alle Objekte haben eine Klasse, Eine Liste von Klassen ergibt keinen Sinn - es sei denn, dich interessiert der Name der Klasse. Und auch dann kann man sich mit String behelfen.
 
Zuletzt bearbeitet:

doktordoom

Mitglied
Guten Abend,
unten seht ihr ein oder das Beispiel. Aktuell gibt es eine Liste von Objekten.
Dabei hat der Index 2 oder das Objekt den Mitarbeitername.
Des Weiteren gibt es eine Matrix die durch eine MitarbeiterDB befüllt wird. Hier steht in der Zeile 1 oder Index 1 der Mitarbeitername.
Jetzt würde ich gerne beide vergleichen wollen ob in beiden der Name Schulze auftritt.

Java:
package example.jdbc.movies;


import java.util.ArrayList;
import java.util.List;

/**
 * This class is used get links from HTML using Jsoup.
 * @author w3spoint
 */
public class Mitarbeiter {

    private static String mitarbeitername ="";

    private static String mitarbeiterguid = "";

    private static int mitarbeiteralter = 0;

    static List<Mitarbeiter> MitarbeiterList = new ArrayList<>();

    public Mitarbeiter(String Name,String GUID,int Alter)
    {
        this.mitarbeitername = Name;
        this.mitarbeiterguid = GUID;
        this.mitarbeiteralter =Alter;
    }

    public String getMitarbeitername()
    {
        return this.mitarbeitername;
    }

    public String getGUID()
    {
        return this.mitarbeiterguid;
    }

    public int getAlter()
    {
        return this.mitarbeiteralter;
    }

    public void setMitarbeitername(String Name)
    {
        this.mitarbeitername = Name;
    }

    public void setGUID(String guid)
    {
        this.mitarbeiterguid = guid;
    }

    public void setAlter(int Alter)
    {
        this.mitarbeiteralter = Alter;
    }

    public static void main(String args[]){

        List<List<String>> Mitarbeiterdb = new ArrayList<List<String>>();

        Mitarbeiterdb.add(new ArrayList<String>());
        Mitarbeiterdb.get(0).add( "Fischer");
        Mitarbeiterdb.get(0).add( "0815");
        Mitarbeiterdb.get(0).add( "0.782311");
        Mitarbeiterdb.add(new ArrayList<String>());
        Mitarbeiterdb.get(1).add( "Schulze");
        Mitarbeiterdb.get(1).add( "0817");
        Mitarbeiterdb.get(1).add( "0.124665");
        Mitarbeiterdb.add(new ArrayList<String>());
        Mitarbeiterdb.get(2).add( "Wagner");
        Mitarbeiterdb.get(2).add( "2133");
        Mitarbeiterdb.get(2).add("0.45614");

        MitarbeiterList.add(new Mitarbeiter("Müller","X123sa",25));
        MitarbeiterList.add(new Mitarbeiter("Meier","STRvdss",87));
        MitarbeiterList.add(new Mitarbeiter("Schulze","12cSA1",12));


        System.out.println(MitarbeiterList.get(0).getMitarbeitername());

        System.out.println(Mitarbeiterdb.get(1).get(0));


    }
}
 

KonradN

Super-Moderator
Mitarbeiter
Bitte schau Dir ganz dringend an, was static macht. Und dann überlege genau, wo es Sinn macht und wo es absolut keinen Sinn macht!
Und ganz wichtig: spiel etwas damit herum! Wenn Du so eine Klasse Mitarbeiter hast, dann erstelle mal zwei Instanzen und dann gib diese aus.

Des Weiteren gibt es eine Matrix die durch eine MitarbeiterDB befüllt wird. Hier steht in der Zeile 1 oder Index 1 der Mitarbeitername.
Jetzt würde ich gerne beide vergleichen wollen ob in beiden der Name Schulze auftritt.
Dazu kannst Du Dir doch einfache Suchmethoden schreiben. Also eine Methode, die ein boolean zurück gibt und die Datenquelel sowie den zu suchenden Namen enthält. Und dann kannst Du Dir überlegen, wie Du durch die beiden Datenquellen durchgehen kannst, um das zu prüfen.

Das Vorgehen ist immer gleich:
1. Überlege Dir genau, wie Du es machen würdest. Nimm Dir Stift und Papier, male die Beispieldaten auf und dann überlege, wie Du da durchgehen kannst. Alternativ kannst Du Dir auch alles bildlich vorstellen. Die MitarbeiterList wäre dann sowas wie ein Karteikasten und jeder Mitarbeiter wäre eine Karteikarte. Wie findest Du heraus, ob es da einen Mitarbeiter mit Name Schulze gibt?

2. Wenn Du das im Detail überlegt hast, dann formuliere es in Worte. Also auch hier noch kein Java oder programmieren.

3. Die Worte kannst Du dann umsetzen in Code.

Dieses Vorgehen ist das, was in der Regel gut zum Ziel führt. Daher kann ich Dir so eine Methodik nur sehr ans Herz legen!
 

Neumi5694

Top Contributor
... und warum haben Mitarbeiter überhaupt eine (gemeinsame, da static) Mitarbeiterliste? Sag jetzt nicht, das hat mit der main-Methode zu tun, denn die gehört auch nicht in eine Datenklasse.
Die Klasse Mitarbeiter sollte nur die Daten des Mitarbeiters beinhalten und sonst gar nichts.
 

doktordoom

Mitglied
Hi,
ich habe es so gemacht wie @KonradN es gesagt hat und es funktioniert. Ich hätte nur gerne verstanden wie solche Konstrukte "list1.stream().map(Person::getName).allMatch(list2::contains);" 100% funktionieren. Vielleicht kennt jemand eine gute Seite.
@Neumi5694 danke für den Hinweis. Es sollte nur ein Bsp. sein zum verstehen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Alle Elemente von zwei Listen vergleichen Allgemeine Java-Themen 10
A zwei listen vergleichen und unterschiede anzeigen Allgemeine Java-Themen 3
D Best Practice Die niedrigste Differenz zwischen zwei Listen ermitteln. Allgemeine Java-Themen 10
J Verschachtelte ListIteratoren um in zwei Listen hin und herzugehen Allgemeine Java-Themen 5
J Zwei sortierte Listen zusammenfassen Allgemeine Java-Themen 8
O Text aus einer Textdatei rausholen, der zwischen zwei Schlüsselworten steht Allgemeine Java-Themen 4
Tobero Wie berechnet man ob zwei Linien sich schneiden? Allgemeine Java-Themen 2
kodela Zwei gleichzeitig gedrückte Steuertasten Allgemeine Java-Themen 10
X Bedingung zwei mal überprüfen Allgemeine Java-Themen 4
Zrebna Random Number - Generische Formel zwischen zwei INKLUSIVEN Werten Allgemeine Java-Themen 16
D Input/Output Zwischen zwei ID-Räumen unterscheiden und Objekt löschen Allgemeine Java-Themen 16
D OOP Gemeinsamen ID-Raum für zwei Klassen implementieren Allgemeine Java-Themen 7
S Wenn eine Klasse zwei Interfaces mit derselben Methodensignatur implementiert: welche wird aufgerufen? Allgemeine Java-Themen 15
S Kann man Variablen oder Felder definieren deren Typ zwei Interfaces ist..? Allgemeine Java-Themen 9
K Aus String zwei Jahreszahlen auslesen Allgemeine Java-Themen 18
M Wie kann man eine void Methode mit Variablen von zwei verschiedenen Objekten ausführen? Allgemeine Java-Themen 15
VfL_Freak Double mit zwei festen NK-Stellen ausgeben Allgemeine Java-Themen 9
Neoline Methoden Zwei Arrays abwechselnd zusammenführen Allgemeine Java-Themen 15
J Zwei Wavdateien gleichzeitig mit SourceDataLine abspielen Allgemeine Java-Themen 0
J Fahrroute zwischen zwei Punkten finden Allgemeine Java-Themen 1
J Kollision von zwei Kreisen Allgemeine Java-Themen 15
J Transfer von Integer zwischen zwei Clients - RMI Allgemeine Java-Themen 4
S Variablen split-Funkton mit zwei Variabeln verwenden? Allgemeine Java-Themen 4
T Alle Kombinationen aus zwei Arrays Allgemeine Java-Themen 8
G Liste zwischen zwei Kalenderdaten erstellen Allgemeine Java-Themen 3
AssELAss Zwei Arrays / ArrayLists inhaltlich vergleichen Allgemeine Java-Themen 2
H RegularExpression zwischen zwei Strings Allgemeine Java-Themen 2
P Zwei Applikationen mit einem Job Allgemeine Java-Themen 0
A Lineare Interpolation mit zwei Arrays Allgemeine Java-Themen 4
E Berechnung des Schnittpunktes von zwei Geraden Allgemeine Java-Themen 1
S Zwei String vergleichen, Fehler markieren Allgemeine Java-Themen 3
G Matrix reduzieren zwei Methoden Allgemeine Java-Themen 2
Dechasa Vergleichen von zwei Arrays Allgemeine Java-Themen 4
P Zwei ArrayLists: Ohne die eine überhaupt anzurühren, wird sie verändert Allgemeine Java-Themen 2
S Anwendung zum ausrechnen der Differenz von zwei Tagen Allgemeine Java-Themen 9
F Zwei LinkedHashMaps iterieren und vergleichen Allgemeine Java-Themen 2
M Zwei unterschiedliche JAR Dateien mit ANT erstellen Allgemeine Java-Themen 8
B Fehler beim Auslesen von Einstellungen. Zwei ähnliche Blöcke, nur eins geht. Allgemeine Java-Themen 5
L Zwei Files miteinander vergleichen und Grafisch darstellen Allgemeine Java-Themen 1
T Zwei Wortendungen vergleichen ohne .equals Allgemeine Java-Themen 10
F Webstart zwei Java Versionen / aktivieren bzw deaktivieren Allgemeine Java-Themen 2
S Zwei Comparable (compareTo) vergleichen Allgemeine Java-Themen 6
E zwei Gleitkommazahlen durcheinander dividieren Allgemeine Java-Themen 2
X Generic muss zwei Klassen/Interfaces erfüllen Allgemeine Java-Themen 5
turmaline OOP zwei gleiche Methoden mit kleinen Unterschieden Allgemeine Java-Themen 15
C Threads Zwei Threads greifen auf LinkedList zu. Allgemeine Java-Themen 12
T Wie heißt ein Binärbaum, dessen Knoten immer zwei Kinder haben müssen? Allgemeine Java-Themen 2
C ActionListener zwei Buttons zuweisen Allgemeine Java-Themen 11
M Eclipse drei slashs durch zwei ersetzen? Allgemeine Java-Themen 3
1 zwei Strings vergleichen Allgemeine Java-Themen 16
C Buchstaben, die in zwei Wörtern vorkommen Allgemeine Java-Themen 13
J Gleiche Packagestruktur in zwei *.jar Dateien Allgemeine Java-Themen 4
G Zwei bytes vergleichen Allgemeine Java-Themen 2
B zwei-dimensionale Collections bzw. Array mit Indizes Allgemeine Java-Themen 3
C Zwei Arrays vereinen Allgemeine Java-Themen 3
K Objekt-Austausch zwischen zwei Programmen über System-Clipboard Allgemeine Java-Themen 5
H Zwei verschiedene Dateien mittels einem Binärstream übertragen? Allgemeine Java-Themen 13
N hashCode() für zwei ints Allgemeine Java-Themen 5
turmaline Gleichheit von zwei Maps Map <String, Map <String, String>> Allgemeine Java-Themen 30
N Wie Listenabgleich auf zwei CPU Cores auslagern? Allgemeine Java-Themen 6
D Zufall wahr bzw. falsch mit zwei Faktoren Allgemeine Java-Themen 10
H Datenaustausch zwischen zwei Java-Programmen Allgemeine Java-Themen 5
H Ausgabe von zwei Textfeldern Allgemeine Java-Themen 3
H Zwei unabhängige Threads miteinander kommunizieren lassen Allgemeine Java-Themen 3
G zwei mal synchronized Allgemeine Java-Themen 5
Z zwei Daten vergleichen Allgemeine Java-Themen 4
C ArrayList anhand von zwei Attributen sortieren Allgemeine Java-Themen 4
T IText: Zwei A4 PDF´s auf ein A3 PDF´s Allgemeine Java-Themen 2
A Differenz zwischen zwei Uhrzeiten Allgemeine Java-Themen 7
H Shortcut ruft zwei Menu-punkte auf Allgemeine Java-Themen 5
J Zwei konstruktoren? Allgemeine Java-Themen 8
G Linked List zwischen zwei Threds übergeben Allgemeine Java-Themen 11
J zwei HashMaps vereinen Allgemeine Java-Themen 3
C Viele Informationen aus zwei Collections vergleichen Allgemeine Java-Themen 2
G Jfreechart zwei charts Allgemeine Java-Themen 2
S Zwei Anwendungen unter Tomcat Allgemeine Java-Themen 4
T Anzahl Tage zwischen zwei Daten - Stunde fehlt? Allgemeine Java-Themen 2
V Zwei ArrayList(s) vergleichen Allgemeine Java-Themen 6
T Überprüfen ob zwei Farben ähnlich sind Allgemeine Java-Themen 14
M zwei main-Methoden Allgemeine Java-Themen 7
P zwei JFrames zusammenhängen Allgemeine Java-Themen 4
A Summe und Produkt von zwei Feldern ( arrays) Allgemeine Java-Themen 9
M HashMap kapselt zwei Objekte aber wie baut man eine Matrix? Allgemeine Java-Themen 2
H zwei Date Variablen überschreiben sich Allgemeine Java-Themen 2
2 Tage zwischen zwei Datumsdaten zählen Allgemeine Java-Themen 2
G Tage zwischen zwei Datumsdaten zählen Allgemeine Java-Themen 3
J Zwei String auf ähnlichkeiten untersuchen? Allgemeine Java-Themen 3
C kürzester weg zwischen zwei Punkten, Koordinaten finden Allgemeine Java-Themen 15
B zwei Bilder miteinander vergleichen Allgemeine Java-Themen 25
L Anzahl Tage zwischen zwei Kalenderdaten Allgemeine Java-Themen 5
P Threadprogrammierung - zwei Threads parallel - einer beendet Allgemeine Java-Themen 3
G Kommunikation von zwei Java-Programmen Allgemeine Java-Themen 3
A Zusammenfassen von zwei Dateien (wie beim DOS-Befehl copy) Allgemeine Java-Themen 6
S zwei Arrays zusammenfassen Allgemeine Java-Themen 14
L Zwei Hashtables statt einer? Allgemeine Java-Themen 6
M zwei Threads - ein singleton-Objekt Allgemeine Java-Themen 3
A funktion schiffeZeichnen zwei mal aufrufen Allgemeine Java-Themen 16
G zwei Rückgabewerte gefordert. Was tun ? Allgemeine Java-Themen 10
Chucky Zwei Binärbäume vereinigen Allgemeine Java-Themen 7
B Fehler:Mein Applet kann nicht auf zwei txt-Dateien zugreifen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben