我可以通过提及索引值从数组中删除特定元素吗?
例如,我可以通过赋予d
值1来删除字符index
吗?
char[] words = { 'c', 'd', 'f', 'h', 'j' };
答案 0 :(得分:1)
如果您不想使用ArrayList, arraycopy 是另一种选择:
System.arraycopy(words, 0, result, 0, i);
System.arraycopy(words, i+1, result, i, result.length-i);
其中 i 是您要删除的索引。
希望我能提供帮助。
编辑:当然,您应该首先定义正确的数组长度:
char[] result = new char[words.length-1];
答案 1 :(得分:1)
假设您不希望数组包含空值,那么您必须创建一个执行此操作的方法。这样的事情就足够了:
public char[] remove(int index, char[] arr) {
char[] newArr = new char[arr.length - 1];
if(index < 0 || index > arr.length) {
return arr;
}
int j = 0;
for(int i = 0; i < arr.length; i++) {
if(i == index) {
i++;
}
newArr[j++] = arr[i];
}
return newArr;
}
然后用remove()的结果替换旧数组。
答案 2 :(得分:1)
如果您需要从数组中删除一个或多个元素而不将其转换为item
或创建其他数组,则可以在O(n)中执行此操作,而不依赖于要删除的项目数。
此处,List
是初始数组,a
是要删除的元素的不同有序索引(位置):
int... r
小测试:
public int removeItems(Object[] a, int... r) {
int shift = 0;
for (int i = 0; i < a.length; i++) {
if (shift < r.length && i == r[shift]) // i-th item needs to be removed
shift++; // increment `shift`
else
a[i - shift] = a[i]; // move i-th item `shift` positions left
}
for (int i = a.length - shift; i < a.length; i++)
a[i] = null; // replace remaining items by nulls
return a.length - shift; // return new "length"
}
答案 3 :(得分:0)
您无法从数组中删除元素,并且&#34;减少&#34;数组大小。创建数组后,它的长度是固定的。
您可以将值更改为无意义或被视为&#34;为空的&#34;,但您无法删除它。
另一种选择是使用列表,例如ArrayList。它有一个&#34;删除&#34;允许您实际从中删除元素的方法。
答案 4 :(得分:0)
import java.util.Arrays;
public class Main
{
public static void main(String[] args) {
int[] my_array = {25, 14, 56, 15, 36, 56, 77, 18, 29, 49};
int removeIndex = 1;
int j=0;
for(int i = 0; i < my_array.length -1; i++)
{
if(i==1)
{
}
else
{
my_array[j] = my_array[i];
j++;
}
}
System.out.println("Original Array : "+Arrays.toString(my_array));
}
}
答案 5 :(得分:0)
使用String类:
char[] words = { 'c', 'd', 'f', 'h', 'j' };
String str = new String(words);
words = (str.substring(0, Math.min(1, words.length)) + str.substring(Math.min(1 + 1, words.length))).toCharArray();
在jshell中运行:
jshell> char[] words = { 'c', 'd', 'f', 'h', 'j' };
words ==> char[5] { 'c', 'd', 'f', 'h', 'j' }
jshell> String str = new String(words);
str ==> "cdfhj"
jshell> words = (str.substring(0, Math.min(1, words.length)) + str.substring(Math.min(1 + 1, words.length))).toCharArray();
words ==> char[4] { 'c', 'f', 'h', 'j' }
jshell>