Ich habe eine Übung in einem Buch gefunden, die etwas Geld in eine ArrayList hinzufügt und sie dann umkehrt. Ich weiß, dass wir einfach Collection.reverse()
verwenden können, was mein Lehrbuch zeigt, aber ich fand eine andere coole Lösung online, die ich versuche zu verstehen, aber Probleme damit habe.Eine ArrayList umkehren (Den Code verstehen)
Heres der Code:
class Purse {
private ArrayList<String> coins = new ArrayList<String>();
public void addCoin(String coinName) {
coins.add(coinName);
}
public void reverse() {
for(int start = 0, end = coins.size() - 1; start < coins.size()/2; start++, end--) {
swap(start,end,coins);
}
}
private void swap(int starting, int ending, List aList) {
Object temp = aList.set(starting, aList.get(ending));
aList.set(ending,temp);
}
public String toString() {
return "Purse: " + coins;
}
}
public class PurseDemo {
public static void main(String [] args) {
Purse purseObj = new Purse();
purseObj.addCoin("Quarter");
purseObj.addCoin("Dime");
purseObj.addCoin("Penny");
purseObj.addCoin("Nickel");
System.out.println(purseObj);
purseObj.reverse();
System.out.println(purseObj);
}
}
Hier ist, wo meine Verwirrung ist:
Object temp = aList.set(starting,aList.get(ending));
aList.set(ending,temp);
Zunächst einmal denke ich, dass ich die Idee, diese zu bekommen. Dies ist jedoch das erste Mal, dass ich das Schlüsselwort Object
sehe. Was ich nicht wirklich bekommen, was temp
repräsentiert tatsächlich (ich diesen Code ausstieg online, in meinem Buch, das sie dieses Schlüsselwort eingeführt hat Object
noch)
Hier sind meine Gedanken auf einem Beispiel Iteration
unsere Arraylist Angenommen hat
[Quarter,Dime,Penny,Nickel]
nach Object temp = aList.set(starting,aList.get(ending));
Wir Quarter
die den ersten Platz in der Arraylist nehmen und i den Wert von nickel
n dort. So erhalten wir die Arraylist
[Nickel,Dime,Penny,Nickel]
Jetzt bin ich irgendwie verwirrt .. Als ich system.out.println(temp)
, es sagt mir, die Werte sind Quarter
und Dime
. Aber warum? Kann jemand eine Beispieliteration mit mir durchgehen?
AFTER READING ANTWORT
[Quarter,Dime,Penny,Nickel]
Nickel
Quarter
ersetzt, ist somit Temp Quarter
. So fügen wir Quarter bis zum Ende I.E wir
Quarter,Dime,Penny,Quarter
Warten bekommen .. Aber woher unsere Nickel gehen ?!
Ich glaube, ich bekommen, was Sie sagen, aber jetzt bin ich ein bisschen verwirrt, was mit Nickel passiert, können Sie mein sehen hinzugefügt zu meiner Frage bearbeiten? –
@cresjoy Nickel wird erst am Ende in Viertel geändert. Nicht der Anfang. – Arthur
Wie? Wenn temp vierteljährlich ist, wenn wir die Zeile aList.set (ending, temp) erreichen, setzen wir den Endindex, der aktuell Nickel ist, auf temp, der ein Viertel ist. –