9

我正在做一个简单的 android 应用程序。我正在使用以下代码从数组中删除一个元素。

 arr_fav = {"1","2","3"};
 for(int i= 0;i<arr_fav.length;i++)
 {
     if(current_id == Integer.parseInt(arr_fav[i]))
     {
        arr_fav[1] = null;
     } }

通过这样做,我得到了像 arr_fav = {"1",null,"3"} 这样的数组。但我想要 arr_fav = {"1","3"}。如何删除一个元素。我是这个 android 开发的新手.请帮我解决这个问题。

4

14 回答 14

19

最好使用arraylist

arr_fav = {"1","2","3"};
List<String> numlist = new ArrayList<String>();
for(int i= 0;i<arr_fav.length;i++)
{
 if(current_id == Integer.parseInt(arr_fav[i]))
 {
   // No operation here 
 }
 else
 {
     numlist.add(arr_fav[i]);
 }
}
 arr_fav = numlist .toArray(new String[numlist .size()]);
于 2012-12-06T08:46:03.433 回答
10

你没有。

数组无法调整大小。

您需要创建一个新的(较小的)数组,并将您希望保留的元素复制到其中。

一个更好的想法是使用List动态的实现。一个ArrayList<Integer>例如。

于 2012-12-06T08:42:26.467 回答
5

Java 中的数组不是动态的,您可以使用 anArrayList来代替。

于 2012-12-06T08:42:18.933 回答
2

您可以将所需的数组元素复制到新数组中

 j = 0;
 for(int i= 0;i<arr_fav.length;i++)
  {
   if(current_id != Integer.parseInt(arr_fav[i]))
 {
    arr_new[j++] = arr_fav[i];
 } }
于 2012-12-06T08:44:59.223 回答
2

使用 anArrayList而不是数组。它支持删除任何元素、动态大小等功能。

ArrayList<String> arr_fav_list = new ArrayList<String>();
arr_fav_list.addAll(arr_fav);
arr_fav_list.remove(1);
于 2012-12-06T08:46:58.077 回答
2

这将完成这项工作......

List x = new ArrayList(Arrays.asList(arr_fav));
x.remove(String.valueOf(current_id));
arr_fav = x.toArray();
于 2012-12-06T11:25:47.110 回答
1

尝试这样的事情

int[] intAry = new int[5]; 

// populate array with 0 to 4  

for (int i=0; i < intAry.length; i++) {  

  intAry[i] = i;  

}  

List<Integer> aList  = Arrays.asList(intAry); // change the array to a list of integers  

aList.remove(3); // remove the item 3 (4th index)  

aList.toArray(intAry); // convert list back to array  

System.out.println("size of array=" + intAry.size()); // output array size should be 4  

for (int i=0; i < intAry.length; i++) {  

  System.out.print(intAry[i] + " "); // should output "0 1 2 4 "  

}  
于 2012-12-06T08:44:24.987 回答
1

试试这个:

    ArrayList<String> rm = new ArrayList<String>();
    rm .addAll(arr_fav);
    rm .remove(1);
于 2012-12-06T08:56:27.890 回答
0

您可以使用以下方法进行操作。

public static String[] removeElements(String[] input, String deleteMe) {
List result = new LinkedList();

for(String item : input)
    if(!deleteMe.equals(item))
        result.add(item);

return result.toArray(input);
}

或者你可以使用ArrayUtils.

array = ArrayUtils.removeElement(array, element)
于 2012-12-06T08:42:41.257 回答
0

    array_fav[1]=array_fav[2];
    array_fav[2]=null;
于 2012-12-06T08:52:01.603 回答
0
    String[] arr_fav =
    { "1", "2", "3" };

    List<String> myList = Arrays.asList(arr_fav);

            String currentId = String.valueOf(current_id);
    for (int i = 0; i < arr_fav.length; i++)
    {
        if (arr_fav[i].equals(currentId))
        {
            myList.remove(i);
        }
    }
于 2012-12-06T08:52:58.127 回答
0

对于像这样的简单数组,您不能以这种方式执行此操作

这是完整的示例代码

int current_id = 2;
        String[] arr_fav = { "1", "2", "3" };
        for (int i = 0; i < arr_fav.length; i++) {
            if (current_id == Integer.parseInt(arr_fav[i])) {
                String[] arr_fav_tem = new String[arr_fav.length - 1];
                arr_fav[1] = null;
                int counter = 0;
                for (int j = 0; j < arr_fav.length; j++) {
                    if (arr_fav[j] != null) {

                        arr_fav_tem[counter] = arr_fav[j];
                        counter++;
                    }

                }

                arr_fav = arr_fav_tem;

            }
        }

        for (int i = 0; i < arr_fav.length; i++) {
            System.out.println(arr_fav[i]);
        }
于 2012-12-06T08:56:42.043 回答
0
 private String[] removeItem(String[] names,
            int position) {

        ArrayList<String> al_temp=new ArrayList<String>();// temporary ArrayList

    for(int i=0;i<names.length;i++)
        {
            al_temp.add(names[i]);
        }

        al_temp.remove(position);
        names= new String[al_temp.size()];//array cleared with new size



        for(int i=0;i<al_temp.size();i++)
        {
            names[i]=al_temp.get(i);
        }


        return names;
    }
于 2015-09-02T07:48:34.727 回答
0

复制此方法:

private static String[] deleteElement(String stringToDelete, String[] array) {
    String[] result = new String[array.length];
    int index = 0;

     ArrayList<String> rm = new ArrayList<String>();

    for(int i = 0; i < array.length; i++) {
        rm.add(array[i]);
    }
    for(int i = 0; i < array.length; i++) {
        if(array[i].equals(poistettava)) {
            index = i;
        }
    }
    rm.remove(index);

    result = rm.toArray(new String[rm.size()]);

    return result;
}

要删除元素:

String[] array = {"1", "2", "3"};
array = deleteElement("3", array);
于 2018-01-17T16:31:39.977 回答