Finden Sie Schnittpunkt zwischen zwei ArrayLists
Finden, die Kreuzung von zwei ArrayLists von Strings.
Hier ist der code:
public ArrayList<String> intersection( ArrayList<String> AL1, ArrayList<String> AL2){
ArrayList<String> empty = new ArrayList<String>();
ArrayList<String> empty1 = new ArrayList<String>();
if (AL1.isEmpty()){
return AL1;
}
else{
String s = AL1.get(0);
if(AL2.contains(s))
empty.add(s);
empty1.addAll(AL1.subList(1, AL1.size()));
empty.addAll(intersection(empty1, AL2));
return empty;
}
}
Möchte ich die Ausgabe wie folgt Aussehen: Zum Beispiel,
[a, b, c] intersect [b, c, d, e] = [b, c]
Den oben genannten code, geben Sie mir diese Ausgabe, aber ich möchte wissen, wie man diesen code leichter zu verstehen.
but I want to know how to make this code more easier to understand
- Hinzufügen von Kommentaren, die beschreiben, jeder Schritt?- Für die code-überprüfung gibt es codereview.stackexchange.com
- Ist dieses Hausaufgaben?
- Was meinst du mit "Schnitt"?
- Kreuzung: was ist gemeinsam in [a, b, c] und [b, c, d, e]. In diesem Fall würden b und c aus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Machen könnte es leichter zu verstehen, es zu schreiben wie diese:
List.retainAll()
direkt, dann Sie wirklich sollten die wrapper-Methode generisch ist.Java collections haben bereits die Unterstützung für diese mit der
retainAll
nennen. Anstatt wieder eine neue Reihe, die Kreuzung passiert, die ist, warum müssen Sie erstellen eine neue ArrayList-wenn Sie möchten, behalten Sie die ursprüngliche list1.retainAll
gibt einen booleschen Wert zurück, wenn der aufrufende Objekt geändertAusgabe:
Könnte man die Verwendung von Schleifen statt Rekursion.
Wenn Sie sind ok mit einer Abhängigkeit, ich würde Ihnen empfehlen, nehmen Sie einen Blick auf apache commons collections (http://commons.apache.org/proper/commons-collections/release_4_0.html).
Für Ihre spezifische Anwendung wäre es, die Methode Kreuzung aus CollectionUtils (https://commons.apache.org/proper/commons-collections/apidocs/org/apache/commons/collections4/CollectionUtils.html)
Können Sie Apache Commons Collections ListUtils.Kreuzung
http://commons.apache.org/proper/commons-collections/javadocs/api-2.1.1/org/apache/commons/collections/ListUtils.html#intersection(java.util.List, java.util.Liste)