我正在運行一個模擬,其中數組中的對象被以下三種方法移動。我的模擬經歷了許多次迭代(約30次)。這意味着我正在運行move()30次。每次迭代只有一次調用方法
-1
A
回答
0
如果你想每隻動物每次迭代只移動一次,那麼你需要標記哪些動物已經移動。
現在,您只有一個布爾變量用於整個Ecosystem類,但這不足以標記每個移動的對象。
您可以使用Set來存儲您已經移動的動物。在每個週期的開始。然後
private Set<Animal> alreadyMoved;
,創建一個新的集從頭開始:
在生態系統類添加此
alreadyMoved = new HashSet<Animal>();
然後在移動方法:
public synchronized void move() {
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
if (ecosystem[i][j] != null) {
if (!alreadyMoved.contains(ecosystem[i][j]) {
// move it
alreadyMoved.add(ecosystem[i][j]);
}
}
}
}
}
0
以下是其他幾種方法:
代替布爾的,給每個動物一個包含最後一次迭代(無),它在移動一個額外的整數字段。
有2個
ecosystem
陣列,一個表示「本次迭代」,另一代表「最後一次迭代」。或者在新迭代開始時將它們翻轉並排除「this iteration」數組,或者只是分配一個新數組,然後讓舊數組進行GC'd。
相關問題
- 1. 如何使jQuery每次只輸出一個值,每次迭代
- 2. 第一次迭代時Hadoop迭代器跳過方法調用
- 3. 有沒有辦法讓迭代器每3次增加一次?
- 4. 每次迭代
- 5. Python調用__init __()方法只有一次
- 6. 在Fortran中每X次迭代只調用一次函數/子程序
- 7. 迭代器只能迭代一次嗎?
- 8. XSL每個迭代一次
- 9. 每次迭代產出一次
- 10. async.eachSeries每次迭代只運行一次async.waterfall
- 11. 快速枚舉定義中的方法只能被調用一次或每次迭代(objective-c)?
- 12. 迭代HashMap的值只有一次
- 13. C#每次迭代
- 14. 每次X迭代都跳過代碼的有效方法?
- 15. jQuery迭代每個列表項只有一次
- 16. 方法沒有被每次調用
- 17. 每一次循環的第一次和第三次迭代
- 18. 每x分鐘調用一次方法
- 19. Objective-C每月調用一次方法
- 20. 每x分鐘調用一次方法
- 21. 方法onFocusChangeListener只調用一次
- 22. 初始方法只調用一次c#
- 23. iOS:只調用一次方法
- 24. WebSecurity.InitializeDatabaseConnection方法只能調用一次
- 25. VisualForce只調用一次getter方法
- 26. String Array只調用一次方法
- 27. 在CodedUI測試與多次迭代,只有最後一次迭代
- 28. rails每個迭代器迭代兩次
- 29. setInterval的調用方法(這)調用它只有一次
- 30. 迭代5次,每次字符
是的,一個布爾標誌應該工作,爲什麼它不工作是不是我很容易看到的東西。請考慮創建併發布有效的[mcve],以便我們瞭解爲什麼事情無法正常工作。這應該是一個* small *程序,將您的問題作爲代碼格式的文本發佈,代碼將在未經修改的情況下編譯和運行,以及直接向我們顯示您的問題的代碼。 –
將布爾值移動到對象中。每個陣列上的循環對象列表。或者使用Map
@HovercraftFullOfEels謝謝。我添加了一些額外的代碼。我包含了我在Carnivore類中找到的move()的實現,並且我包含了我的cycle()方法,它將所有內容一起調用。仍試圖弄清楚這一點!任何幫助表示讚賞。 – mmuso