可能重复:
例如,如何删除特定的字符串数组值
String[] str_array = {"item1","item2","item3"};
我想从 str_array 中删除“item2”请帮助我我想要输出
String[] str_array = {"item1","item3"};
原文由 Vicky 发布,翻译遵循 CC BY-SA 4.0 许可协议
可能重复:
例如,如何删除特定的字符串数组值
String[] str_array = {"item1","item2","item3"};
我想从 str_array 中删除“item2”请帮助我我想要输出
String[] str_array = {"item1","item3"};
原文由 Vicky 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您 必须 使用数组, System.arraycopy
是最有效、可扩展的解决方案。但是,如果必须多次从数组中删除一个元素,则应使用 List 的实现而不是数组。
下面利用 System.arraycopy
来达到预期的效果。
public static Object[] remove(Object[] array, Object element) {
if (array.length > 0) {
int index = -1;
for (int i = 0; i < array.length; i++) {
if (array[i].equals(element)) {
index = i;
break;
}
}
if (index >= 0) {
Object[] copy = (Object[]) Array.newInstance(array.getClass()
.getComponentType(), array.length - 1);
if (copy.length > 0) {
System.arraycopy(array, 0, copy, 0, index);
System.arraycopy(array, index + 1, copy, index, copy.length - index);
}
return copy;
}
}
return array;
}
此外,如果您知道数组仅包含 Comparable
对象,则可以提高方法的效率。您可以使用 Arrays.sort
对它们进行排序,然后再通过 remove
方法,修改为使用 Arrays.binarySearch
来查找循环的一部分,而不是提高索引的一部分该方法的效率从 O(n) 到 O(nlogn)。
原文由 FThompson 发布,翻译遵循 CC BY-SA 3.0 许可协议
4 回答1.6k 阅读✓ 已解决
4 回答1.4k 阅读✓ 已解决
1 回答2.6k 阅读✓ 已解决
4 回答2k 阅读
2 回答791 阅读✓ 已解决
2 回答1.7k 阅读
2 回答1.4k 阅读
我会这样做: