【问题标题】:Remove element from certain array using JAVA?使用 JAVA 从某个数组中删除元素?
【发布时间】:2014-04-21 18:52:02
【问题描述】:

问题:给定一个数组和一个值,删除该值的所有实例并返回新的长度。元素的顺序可以改变。在新长度之外留下什么并不重要。

我想通过使用 JAVA ArrayList 来解决这个问题。并按代码列出如下:

import java.util.ArrayList;
import java.util.Arrays;


public class removeElement {

/**
 * @param args
 */
public int removeElement(int[] A, int elem) {

    int length = 0;
    ArrayList<Integer> al = new ArrayList<Integer>();
    Arrays.sort(A);
    //add elements in A to al
    for(int i:A){
        al.add(i);
    }
    //Remember arraylist's remove() is to remove first occurance of elements. 
    if(al.contains(elem)&&al.size() == 1){
        return 0;
    }
    while(al.contains(elem)){
        al.remove(elem);
    }
    length = al.size();
    return length;

}
public static void main(String[] args) {
    // TODO Auto-generated method stub
    removeElement re = new removeElement();
    int[] A = {3, 3};
    int element = 3;
    System.out.println(re.removeElement(A, element));

}

}

结果表明:

Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 3, Size: 2
    at java.util.ArrayList.rangeCheck(ArrayList.java:571)
    at java.util.ArrayList.remove(ArrayList.java:412)
    at removeElement.removeElement(removeElement.java:24)
    at removeElement.main(removeElement.java:35)

我可以使用 JAVA ArrayList 来解决这个问题吗?还是我应该以其他方式解决它?等待你的答复。非常感谢!

【问题讨论】:

标签: java


【解决方案1】:

你可以做的更简单。

public int[] removeElement(int[] input, int deleteMe) {
    List<Integer> result = new LinkedList();

    for(int i=0;input.length;i++)
        if(deleteMe!=input[i])
            result.add(input[i]);

    return result.toArray(input);
}

【讨论】:

  • 真的很高效!
  • 不客气,所以它可能会被标记为正确答案;)
【解决方案2】:

由于ArrayList 中有两个重载的remove() 方法,一个接受int 参数作为对象的索引,另一个接受Object 作为要删除的参数。

您已经使用包装器对象来删除该 int 元素。否则,将调用重载的 remove(int index) 并且您在索引 3 处没有任何元素,所以,您得到了 IndexOutOfBoundsException

while(al.contains(elem)){
   al.remove(new Integer(elem));
}

【讨论】:

    猜你喜欢
    • 2022-01-13
    • 1970-01-01
    • 1970-01-01
    • 2019-01-05
    • 1970-01-01
    • 2010-10-13
    • 2016-05-17
    • 2019-01-26
    相关资源
    最近更新 更多