我有一个变量数组,我想删除其中一个元素,然后将整个数组向下移动以填充已删除的那个点。任何帮助将不胜感激,在你问之前,不是这不是功课。
答案 0 :(得分:2)
理想情况下,请使用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;
答案 1 :(得分:0)
在数组中执行此操作效率不高,尤其是当您需要提供数组的缩小时:
此任务的更好选项是LinkedList
。它提供了删除任意元素的操作,并且不需要任何移动来修复集合。
答案 2 :(得分:0)
我认为最好的解决方案是使用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] = "";
}
}
}
}
答案 3 :(得分:0)
一种可能的解决方案是使用Arrays.asList
和List#toArray
方法将数组临时转换为List
,使用remove
的{{1}}方法},并将其转换回数组。
List
代码短,但很可能不是最有效的解决方案。