【发布时间】: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 来解决这个问题吗?还是我应该以其他方式解决它?等待你的答复。非常感谢!
【问题讨论】:
-
即使它不是您特定问题的答案,我宁愿为此目的使用谓词stackoverflow.com/questions/2312849/…
标签: java