在android中从string数组中删除一个元素

我正在做一个简单的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”}。如何删除一个元素。请帮我解决这个问题。

Solutions Collecting From Web of "在android中从string数组中删除一个元素"

它更好地使用数组列表

 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()]); 

你没有。

数组不能resize。

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

更好的想法是使用dynamic的List实现。 例如, ArrayList<Integer>

Java中的数组不是dynamic的 ,你可以使用ArrayList来代替。

你可以将你想要的数组元素复制到一个新的数组中

  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]; } } 

使用ArrayList而不是数组。 它支持删除任何元素,dynamic大小等function。

 ArrayList<String> arr_fav_list = new ArrayList<String>(); arr_fav_list.addAll(arr_fav); arr_fav_list.remove(1); 

尝试这个:

  ArrayList<String> rm = new ArrayList<String>(); rm .addAll(arr_fav); rm .remove(1); 

这会做这个工作…

 List x = new ArrayList(Arrays.asList(arr_fav)); x.remove(String.valueOf(current_id)); arr_fav = x.toArray(); 

尝试这样的事情

 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 " } 

  array_fav[1]=array_fav[2]; array_fav[2]=null; 

你可以用下面的方法做

 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) 

对于这样的简单数组,你不能这样做

这里是完整的示例代码

 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]); } 
  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); } } 
  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; }