Java 从数组中删除元素
可能重复:Java 从数组中删除元素,java,arrays,Java,Arrays,可能重复: 有没有办法去掉数组中的一些元素。 例如,如果我有这个数组 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&
有没有办法去掉数组中的一些元素。 例如,如果我有这个数组
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[]);
}
public int[]getRidOfZero(int[]s){
列表结果=新建ArrayList();
对于(int i=0;i而言,您非常接近,但是:
- 您的泛型出错(
List
语法无效)
- 您的比较仅在元素小于零时添加元素(而不是在元素不等于零时添加)
- 您调用了错误的方法。因为
int
是原语,您必须自己将列表转换回数组
public int[]getRidOfZero(int[]s){
列表结果=新的ArrayList();
用于(int i:s){
如果(i!=0){
结果.添加(i);
}
}
int[]toReturn=new int[result.size()];
对于(int i=0;iJava数组,无法调整其大小。您需要创建一个新数组
计算数组中的非零元素。创建一个大小相同的新数组。将元素从旧数组复制到新数组,跳过零元素
您可以使用列表执行此操作。最好的方法是创建一个整数列表;向其中添加非零元素;然后使用toArray从列表中创建数组。由于您从数组开始,因此需要创建一个新数组并从旧数组中复制项,不包括零
如果你一次去掉一堆零,这会很快
否则,您需要从双链接开始
LinkedList有一个迭代器,允许您沿着列表移动并删除元素,这将是一个常量时间操作。我猜这里的temp必须是一个整数object@Julio:抱歉,这是我的错误。已修复。toArray返回对象[]数组,您的方法返回int[]原语使这更痛苦。“胡里奥-不,既不是代码,也不是代码< >代码> > 需要是<代码>整型< /Cord>对象,这得益于java的魔力。@ Yishai:NGH……你是对的。固定。因为这个问题专门要求删除数组中间的元素,这不是一回事——投票重新打开。
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;
}