从java中的数组中删除特定索引

时间:2014-11-10 16:48:47

标签: java arrays character

我可以通过提及索引值从数组中删除特定元素吗? 例如,我可以通过赋予d值1来删除字符index吗?

char[] words = { 'c', 'd', 'f', 'h', 'j' };

6 个答案:

答案 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>