java—是否可以使用方法删除对象数组中的字符串元素?

dvtswwa3  于 2021-06-26  发布在  Java
关注(0)|答案(6)|浏览(298)

这个问题在这里已经有答案了

如何比较java中的字符串(23个答案)
一小时前关门了。
如何使用不同的方法删除数组中的字符串元素。有什么办法吗?我目前有这个,但它不工作,我的想法。

else if(operations ==2){
                String searchStudentNumber = sc.next();
                StudentAssistant[] copy = new StudentAssistant[studAssistant.length-1];
            for(int i=0,j=0;i<studAssistant.length;i++){
                if(copy[i]!= searchStudentNumber){
                    copy[j++] =
                }
            }

//                for(int i = 0; i<sACounter; i++)
////                    if(studAssistant[i].getStudentNumber().equals(searchStudentNumber)){
//                    if(studAssistant[i].equals(searchStudentNumber)){  
////                        studAssistant[i].searchStudentNumber(searchStudentNumber);
//                        studAssistant[i] = null;
//                        break;
//                    }
                  }
mqxuamgl

mqxuamgl1#

仅使用数组,您可以创建一个或多个相同大小的数组,并在第二个数组上标记为removed或free\u novalue。(false)

public class ArrayTest {

public static void main(String[] args) {
    // TODO Auto-generated method stub
    ArrayTest test = new ArrayTest();
    MyArray myArr  = test.new MyArray(3);
    myArr.add(1, 0);
    myArr.add(2, 1);
    myArr.add(3, 2);
    System.out.println(myArr);
    myArr.remove(1);
    System.out.println(myArr);
}

class MyArray
{
    int arr[];
    boolean abool[];
    MyArray(int size)
    {
        arr=new int[size];
        abool=new boolean[size];

    }
    public void add(int i,int pos)
    {
            //just replace any value if exists and mark as used
            arr[pos]=i;
            abool[pos]=true;
    }

    public void remove(int index)
    {
        abool[index]=false;
    }

    public String toString()
    {
        StringBuffer sb= new StringBuffer();
        for(int i=0;i<arr.length;i++)
        {
            if(abool[i])
            {
                sb.append("arr["+i+"]="+arr[i]+"\n");
            }
        }
        return sb.toString();
    }       
}
}

输出

arr[0]=1
arr[1]=2
arr[2]=3
//after remove 1_index
arr[0]=1
arr[2]=3

基本上所有的值都在原始数组中,但只显示标志为真的值

b4lqfgs4

b4lqfgs42#

你应该使用 List 如果要删除元素,则改为。

List<String> list = new ArrayList<>(Arrays.asList("1", "2", "3", "4", "5"));
list.remove(0);//delete element at index 0
list.remove("3");//remove element with value "3"
System.out.println(list);
f8rj6qna

f8rj6qna3#

尝试使用下面的代码

for(int i=0,j=0;i<studAssistant.length;i++){
    if(!studAssistant[i].equals(searchStudentNumber)){
        copy[j++] = studAssistant[i];
    }
}
oxiaedzo

oxiaedzo4#


Java array 是不可变的,即初始化数组不能更改其大小。因此,要从数组中删除一个元素,必须使用 size - 1 并将所有剩余项复制到它。

String[] original = { "0", "1", "2", "3" }; // [ "0", "1", "2", "3" ]
String[] res = removeElement(original, 1);  // [ "0", "2", "3" ]

public static String[] removeElement(String[] arr, int i) {
    assert arr != null;
    assert arr.length > 0;
    assert i >= 0 && i < arr.length;

    String[] res = new String[arr.length - 1];
    System.arraycopy(arr, 0, res, 0, i);
    System.arraycopy(arr, i + 1, res, i, arr.length - i - 1);

    return res;
}

作为替代,您可以使用 Apache ArrayUtils :

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
</dependency>
String[] original = { "0", "1", "2", "3" };     // [ "0", "1", "2", "3" ]
String[] res = ArrayUtils.remove(original, 1);  // [ "0", "2", "3" ]

幸运的是,有 ArrayList (与其他数据类型一起),它在内部执行所有这些操作:

List<String> original = Arrays.asList("0", "1", "2", "3");  // [ "0", "1", "2", "3" ]
original.remove(1); // [ "0", "2", "3" ]
okxuctiv

okxuctiv5#

需要使用数组吗?可以使用字符串列表。另一种可能的解决方案是获取数组并使用“arrays.aslist(yourray)”。这将返回一个列表。然后可以删除要删除的字符串,然后将其转换回数组。

String stringArray[] = {"1","2","3"};
List<String> list = Arrays.asList(stringArray);
list.remove("2");
Object[] stringRemovedArray = list.toArray();
ss2ws0br

ss2ws0br6#

您当然可以尝试使用apache中的arrayutils lib。

ArrayUtils.remove([1], 0)          = []
 ArrayUtils.remove([1, 2], 0)       = [2]
 ArrayUtils.remove([1, 2], 1)       = [1]
 ArrayUtils.remove([1, 2, 3], 1)    = [1, 3]

apachecommons的maven依赖关系将是

<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.11</version>
</dependency>

相关问题