有没有办法可以摆脱数组中的一些元素。 例如,如果我有这个数组
int testArray[] = {0,2,0,3,0,4,5,6}
是否有“快速”的方法来摆脱等于0的元素
int resultArray[] = {2,3,4,5,6}
我尝试了这个功能,但是我迷失了使用列表
public int[] getRidOfZero(int []s){
List<> result=new ArrayList<>();
for(int i=0; i<s.length; i++){
if(s[i]<0){
int temp = s[i];
result.add(temp);
}
}
return result.toArray(new int[]);
}
答案 0 :(得分:1)
你很亲密,但是:
List<>
语法无效)toArray()
方法。ints
是基元,所以您必须自己将列表转换回数组。public int[] getRidOfZero(int[] s) {
List<Integer> result = new ArrayList<Integer> ();
for (int i : s) {
if (i != 0) {
result.add(i);
}
}
int[] toReturn = new int[result.size()];
for (int i=0; i<result.size(); i++) {
toReturn[i] = result.get(i);
}
return toReturn;
}
答案 1 :(得分:1)
无法调整Java数组的大小。您需要创建一个新数组。
计算数组中的非零元素。创建一个大小的新数组。将元素从旧数组复制到新数组,跳过零元素。
您可以使用列表执行此操作。你最好的办法是创建一个整数列表;添加非零元素;然后使用toArray从列表中创建一个数组。
答案 2 :(得分:0)
由于您是从数组开始的,因此您需要创建一个新数组并从旧数组中复制项目,不包括零。
如果你一次删除一堆零,这将会很快。
否则,您需要从双重链接LinkedList开始。
LinkedList有一个迭代器,允许你沿着列表移动并删除元素,这将是一个恒定时间操作。