我有一個變量數組,我想刪除其中的1個元素,然後將整個數組向下移動以填充被刪除的點。任何幫助將不勝感激,並且在你問之前,不,這不是功課。如何將陣列元素從某個位置向下移動?
回答
理想情況下,使用ArrayList
(或其他列表實現),而不是已經爲您實現的地方。 (您想要使用的具體實現取決於您需要多長時間執行一次清除操作,以及您需要多長時間檢索一次還是按索引設置等等。有了更多的上下文,我們可以幫助您更多。)
否則,使用System.arraycopy
。
System.arraycopy(array, index + 1, array, index, array.length - index - 1);
// Assuming it's a reference type array: null out the last element so it
// doesn't prevent garbage collection
array[array.length - 1] = null;
'ArrayList'仍然不是一個好的選擇 - 它仍然需要移動所有元素 – 2012-04-27 05:24:20
@BorisStrandjev:我已經編輯過 - 這取決於你需要多久執行一次這個操作。有很多變量涉及到,基本上 - 我不會在這裏推薦LinkedList,因爲如果OP需要按索引做很多get/set操作,那麼這將會很糟糕。 (它在內存方面的效率也會明顯降低。) – 2012-04-27 05:26:48
很少有人應該在'ArrayList'上使用'LinkedList'。請參閱以下文章(有點舊,但可能仍然相關):[第1條](http://onjava.com/onjava/2001/05/30/optimization.html)和[第2條](http: //www.javaspecialists.eu/archive/Issue111.html)。可能是由於「LinkedList」必須包裝每個元素才能創建元素之間的鏈接 – Robin 2012-04-27 06:07:39
在陣列中這樣做會不會是有效的,特別是如果你需要提供數組的萎縮:
- ,如果你不需要收縮你可以換到最後所有元素。
- 如果您需要縮小,那麼唯一的選擇是分配新數組並複製所有元素。
該任務的更好選擇是LinkedList
。它提供了刪除任意元素的操作,並且它不需要任何移動來固定收集。
我認爲最好的解決辦法是使用ArrayList
ArrayList<String> list = new ArrayList<String>();
//add Elements
list.add("test1");
list.add("test2");
list.add("test3");
//remove Element 2 (->1)
list.remove(1);
//print Element 2
System.out.println(list.get(1));
//output: test3
如果你真的想給我們一個數組:
private void removeElement(String[] array, int index) {
final int arrayLength = array.length;
for (int i = index + 1; i < arrayLength; i++) {
if (i > 0) {
array[i - 1] = array[i];
if (i == arrayLength - 1) {
array[i] = "";
}
}
}
}
一個可能的解決方案是使用Arrays.asList
和List#toArray
方法將陣列暫時轉換爲List
,使用List
的可用remove
方法,並將其轉換回數組。
Object[] arrayToShrink = ...;
List<Object> shrinkedList = new ArrayList<Object>(Arrays.asList(arrayToShrink));
shrinkedList.remove(objectToRemove);
Object[] shrinkedArray = shrinkedList.toArray(new Object[shrinkedList.size()]);
短代碼明智,但最有可能不是最有效的解決方案。
你試過這個嗎? Arrays.asList()。remove(...)將拋出。 – 2012-04-27 06:10:15
@JonSkeet好的。不,我沒有嘗試過,但我會糾正答案。似乎我需要額外的一行代碼 – Robin 2012-04-27 06:12:29
- 1. jQuery:將元素從一個位置滑動到某個位置
- 2. 向下移動矩陣的元素java
- 3. 將陣列中的元素移動到空白位置
- 4. 將陣列的元素移動到指定的位置
- 5. 如何從陣列中刪除元素並將所有元素都移動到某個點上?
- 6. 動畫:將元素從一個位置移動到另一個位置
- 7. CSS div將元素向下移動
- 8. 從陣列中動態移除元素
- 9. 從陣列中移除元素,然後移動其他元素
- 10. 如何使用jQuery將元素移動到第三個位置?
- 11. 浮動元素下元素的位移
- 12. 陣列中某個元素的潛在位置和值
- 13. 從某個位置刪除元素
- 14. jQuery:移動元素位置
- 15. 將陣列中的元素向右移動1
- 16. 如何在樹上向上/向下移動一個元素
- 17. 如何將整個div元素向上移動x個像素?
- 18. 將對象移動到某個位置
- 19. 將元素向右移動
- 20. 將元素從一個向量移動到另一個向量
- 21. 將NSSheets的位置向下移動23像素
- 22. 如何獲得列表中的某個元素,給定位置?
- 23. 將陣列項目移位4位置
- 24. CSS將浮動元素移動到另一個位置
- 25. 如何將li元素移動到特定位置?
- 26. 如何使用普通JavaScript將元素從DOM中的一個位置移動到另一個位置?
- 27. 如何刪除元素,還移陣列
- 28. 如何移動一個給定位置陣列的標記?
- 29. 將XML元素從其位置移動到另一個父元素下使用xslt
- 30. 隨機化元素位置到陣列
你嘗試過什麼嗎?您是否修復了使用數組而不是更靈活的數據結構(如集合)? – 2012-04-27 05:23:03
您可以使用'ArrayList' – Neifen 2012-04-27 05:23:11
發佈一些代碼,以便我們可以更好地理解您的問題。 – 2012-04-27 05:23:12