2016-03-19 14 views
0

Im Grunde bin ich versucht zu lernen, wie Elemente in einer Liste zu überspringen, während es auf eine Klon-Liste mit einem anderen Elemente zu einem bestimmten Index gesetzt Vergleichwie Elemente in einer Liste zu überspringen, während alle andere Elemente unverändert bleiben Überprüfung

zum Beispiel:

List<String> a; 
List<String> b = a.clone(); 
b.set(i, "word"); 

so grundsätzlich, wenn das Element bei i in b geändert hat, was ich will prüfen ist, ob ich das Element Überprüfung überspringen kann ich, wenn alle anderen Elemente in dem gleichen Index der Liste bleiben, um zu sehen a, ich habe es versucht:

public static boolean check(List<String> d, List<String> a,int i) 
{ 
    boolean check = false; 
    for (int r = 0; r < d.size(); r++) 
    { 
     if (r == i) continue; 
     check = d.get(r).equals(a.get(i)); 
    } 
    System.out.println(check); 
    return check; 
} 

aber es gibt false jedes Mal, wenn ich es teste

Dies ist für Lernzwecke, wenn Sie das Gefühl haben, dass ich mich nicht richtig erklären, bitte hinterlassen Sie einen Kommentar.

+3

Also, Sie wollen überprüfen, ob alle entsprechenden Elemente beider Listen gleich sind, außer für den Index 'i', ist das richtig? Wenn ja, sollte 'a.get (i)' 'a.get (r)' sein, und Sie sollten aus der Schleife ausbrechen, sobald die Prüfung falsch wird, andernfalls vergleichen Sie nur das letzte Element. –

+0

Aaaa also im Grunde a.get (i) ist das Culpit. Ich habe nachgesehen und du hast vollkommen recht, das war ein bisschen albern von mir - danke für deine Hilfe. – Bargros

Antwort

0

Ich habe Ihren Code bearbeitet, der die Anzahl der Elemente in den beiden Listen überprüft. Die Anzahl der Übereinstimmungen (gehalten durch die Variable ct) sollte 1 kleiner als die Größe der Liste sein, da 1 Element übersprungen wurde. wahr oder false wird entsprechend zurückgegeben.

public static boolean check(List<String> d, List<String> a,int i) { 
    int ct=0; 
    for (int r = 0; r < d.size(); r++) { 
     if (r==i) 
     continue; 
     if((d.get(i)).equals(a.get(i))) 
     ct++; 
    } 
    if(ct==d.size()-1) 
    return true; 
    return false; 
} 

Ich hoffe, es löst Ihr Problem.

+0

Es wurde bereits gelöst, danke trotzdem, das ist eine zu komplizierte Methode, wenn ich einfach das Element mit dem Schlüsselwort continue überspringen kann, setze die boolesche Variable auf true dann var = var && this.equals (this) und gib es zurück, was einfacher scheint. Immer noch eine gute Antwort und ich werde es versuchen – Bargros

+0

Danke für den Kommentar. Bitte :) –

Verwandte Themen