ArrayList에 돈을 더하는 책에서 실습을 발견했습니다. 내 교과서에서 보여주는 것인데 Collection.reverse()
을 쉽게 사용할 수 있다는 것을 알고 있지만 이해하기 쉽지만 문제가있는 또 다른 멋진 솔루션을 온라인에서 찾았습니다.ArrayList 반전하기 (코드 이해하기)
을 Heres 코드 : 내 혼란이 어디 여기
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
실제로
내 생각은 예를 들어 반복
우리의 ArrayList를 가정에있는 (그들은 아직이 키워드 Object
을 소개 havent 한 내 책 꺼져 온라인이 코드를 가지고) 무엇을 나타내는 지입니다 우리는 ArrayList를 Quarter
의 첫 번째 자리를 가지고 nickel
의 값을 넣어 Object temp = aList.set(starting,aList.get(ending));
에 따르면
[Quarter,Dime,Penny,Nickel]
가 나는 거기있어. I system.out.println(temp)
, 그것은 나에게 말한다 때 그래서 우리는 값이 Quarter
및 Dime
있습니다 .. 내가 가지 혼란 스러워요 지금 ArrayList를
[Nickel,Dime,Penny,Nickel]
를 얻을. 하지만 왜? 누군가가 나와 함께 예제 반복을 할 수 있습니까? 독서의 답변
[Quarter,Dime,Penny,Nickel]
Nickel
AFTER
이 Quarter
대체하여 온도가 Quarter
입니다. 그래서 우리는 우리가
Quarter,Dime,Penny,Quarter
대기를 얻을 말 즉에 분기를 추가 .. 그러나 우리의 니켈은 어디 갔지?!
내가 무엇을 당신의 말을 얻을 수 있다고 생각하지만, 지금은 내을 볼 수 있습니다, 니켈 일이 무엇인지에 조금 혼란 스러워요 : 마침내
aList.set(ending, temp);
는Quarter
에 aList의 마지막 요소를 설정합니다 내 질문에 편집을 추가 했습니까? –@cresjoy 니켈은 끝에 4 분의 1로만 변경됩니다. 처음이 아닙니다. – Arthur
어떻게? 우리가 aList.set (ending, temp) 행에 도달 할 때 temp가 quarter이면, currenrlty Nickel 인 종료 인덱스를 temp가되는 temp로 설정합니다. –