Java 从数组中删除最后一个元素

Java 从数组中删除最后一个元素,java,arrays,Java,Arrays,我试图根据方法的参数从数组中删除一个元素。如果参数是最后一个元素的位置,我不能使用for循环并最终指定一个If语句来满足它。还尝试在删除后返回该位置的当前名称。我已经测试过了,下面的代码可以正常工作 我想看看是否有更好的方法可以在不使用额外的if语句的情况下产生相同的结果。我试着查找Arrays类,但那里没有任何静态方法似乎也有帮助。如果有更好的方法,请提供建议。谢谢 public class ArrayTester { public static String[] array1 = n

我试图根据方法的参数从数组中删除一个元素。如果参数是最后一个元素的位置,我不能使用for循环并最终指定一个If语句来满足它。还尝试在删除后返回该位置的当前名称。我已经测试过了,下面的代码可以正常工作

我想看看是否有更好的方法可以在不使用额外的if语句的情况下产生相同的结果。我试着查找Arrays类,但那里没有任何静态方法似乎也有帮助。如果有更好的方法,请提供建议。谢谢

public class ArrayTester {
    public static String[] array1 = new String[100];

    public static void main(String[] args) {
        remove(50);
        System.out.println(remove(50));
    }

    public static String remove(int name) {

        if(name == 99){
            array1[name] = null; 
            return array1[name]; 
        }

        else if (name >= 0 && name < 99){         
            for (int i=name; i < array1.length-1; i++){
                    array1[i] = array1[i+1];
            }
            return array1[name]; 
        }
        return null;  
    }
}
公共类ArrayTester{
公共静态字符串[]数组1=新字符串[100];
公共静态void main(字符串[]args){
移除(50);
系统输出println(删除(50));
}
公共静态字符串删除(int name){
如果(名称==99){
array1[name]=null;
返回数组1[名称];
}
如果(name>=0&&name<99){
for(int i=name;i
看看你的代码,你似乎想要这样的东西-

if (name == 99) {
  try {
    return array1[name]; 
  } finally {
    array1[name] = null; 
  }
}
还有ArrayList

import java.util.ArrayList;

public class RemoveArrayListElement {

    public static void main(String[] args) {

        ArrayList<String> arlist=new ArrayList<String>();

        //<E> it is return type of ArrayList

        arlist.add("First Element"); // adding element in ArrayList
        arlist.add("Second Element");
        arlist.add("Third Element");
        arlist.add("forth Element");
        arlist.add("fifth Element");

        // remove array list element by index number
        arlist.remove(3);

        // remove ArrayList element by Object value
        arlist.remove("fifth Element");


        // get elements of ArrayList 
        for(int i=0;i<arlist.size();i++)
        {
            System.out.println("ArrayList Element "+i+" :"+arlist.get(i));
        }
    }
}

使用ArrayList更容易,不是吗?

通过排除
if
,您可以稍微简化代码。不幸的是,循环必须保留-数组提供连续存储,所以如果要删除数组中间的项,则需要移动数据。

array1 = Arrays.copyOf(array1, 99);
public static String remove(int index) {
    // Note the use of "index" instead of "name"
    if (index < 0 || index >= array1.length) {
        // A more common approach is to throw an exception,
        // but your code returns null for out-of-range index
        return null;
    }
    for (int i = index; i < array1.length-1 ; i++) {
        array1[i] = array1[i+1];
    }
    // Unconditionally set null in the last element of the array
    array1[array1.length-1] = null;
    return array1[index]; 
}
公共静态字符串删除(int索引){
//注意使用“索引”而不是“名称”
if(索引<0 | |索引>=阵列1.长度){
//更常见的方法是抛出异常,
//但对于超出范围的索引,代码返回null
返回null;
}
for(int i=索引;i
听起来您最好使用ArrayList。数组并不是为您正在做的事情而设计的。但是您也可以在所需的位置将值设为null,然后在数组上运行java.util.Arrays.sort方法。类似这样的东西(我正在做,但这很接近):

这将给您留下一个已排序的数组,但您已经将它们从原始索引中移出,因此这可能对您有影响,也可能对您没有影响


另一个选项是简单地添加一个
if(array1[index]!=null)
条件到处理该数组的所有代码中。这样,您就不必在数组中来回移动值,代码只需跳过它遇到的任何空值。

@ZouZou。我不想复制数组。我想删除数组中的特定元素。您可能需要考虑重命名变量。code>int-index和
String-name
int-name
好。我不知道您的要求是什么,但您可能希望使用ArrayList而不是数组。它有一个remove方法,可以执行您想要的操作。@keshk在将元素设置为
null
之前,您需要存储该元素
if(name==99){String s=array1[name];array1[name]=null;return s;}
我明白这一点,但我更关心的是-我是否可以删除array1[99]中的元素而不使用额外的if语句?这个代码段与这个问题有什么关系?@Dmitry Em我不想复制。它“删除”数组的最后一个元素。当此数组短于一个位置时。你不喜欢什么?让作者决定是否减少数组。此代码将对象“array1”替换为不带最后一个元素的副本。是的。但是有没有一种方法可以使用数组?你必须只使用数组对象?不是必须的,但我不想偏离数组,除非需要。我从ArrayList上明白你的意思。只是询问是否可能只使用数组。
public static String remove(int index) {
    // Note the use of "index" instead of "name"
    if (index < 0 || index >= array1.length) {
        // A more common approach is to throw an exception,
        // but your code returns null for out-of-range index
        return null;
    }
    for (int i = index; i < array1.length-1 ; i++) {
        array1[i] = array1[i+1];
    }
    // Unconditionally set null in the last element of the array
    array1[array1.length-1] = null;
    return array1[index]; 
}
public static String remove(int name) {

    String returnValue = array1[name];
    array1[name] = null;
    java.util.Arrays.sort(array1);
    return returnValue;

}