我在一本書中發現了一個練習,它在ArrayList中添加了一些資金,然後將它們逆轉。我知道我們可以很容易地使用Collection.reverse()
,這是我的教科書顯示的內容,但是我發現了另一個很酷的解決方案,我在嘗試理解但遇到問題。顛倒ArrayList(瞭解代碼)
繼承人的代碼:
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);
}
}
這裏就是我的困惑是:
所有的Object temp = aList.set(starting,aList.get(ending));
aList.set(ending,temp);
首先,我覺得我得到的這個想法。不過,這是我第一次看到Object
關鍵字。我真的不明白是什麼temp
實際上代表(我得到這個代碼從網上,在我看來他們還沒有推出該關鍵字Object
還)
這裏有一個例子迭代
假設我們的ArrayList中我的想法有
[Quarter,Dime,Penny,Nickel]
根據Object temp = aList.set(starting,aList.get(ending));
我們採取ArrayList中Quarter
的第一地點與放nickel
i的值在那裏。因此,我們得到的ArrayList
[Nickel,Dime,Penny,Nickel]
現在我有點糊塗。當我system.out.println(temp)
,它告訴我的值是Quarter
和Dime
。但爲什麼?有人可以通過與我的例子迭代?
之後讀ANSWER
[Quarter,Dime,Penny,Nickel]
Nickel
取代Quarter
,從而溫度是Quarter
。因此,我們添加季度到年底 即我們得到
Quarter,Dime,Penny,Quarter
等待。但在哪裏我們去鎳?
我覺得我得到了你的說法,但現在我有點困惑,什麼與鎳發生,你可以看到我添加編輯到我的問題? –
@cresjoy鎳只在最後變成四分之一。不是開始。 – Arthur
如何?如果temp到達aline.set(ending,temp)時的四分之一,我們將結束索引設置爲currenrlty Nickel,temp爲四分之一。 –