使用 ArrayList(java) [duplicate] 从数组中删除元素

removing an element from an array using ArrayList(java) [duplicate]

提问人:Amalshanth 提问时间:7/23/2023 最后编辑:Amalshanth 更新时间:7/24/2023 访问量:104

问:

我正在尝试使用 ArrayList 从数组中删除一个元素。但是我似乎无法让它工作。我是 java 新手。 这是我所做的代码

package workspace;
import java.util.*;
import java.util.stream.*;
public class Worksapce{
    private static Collection<Integer> returnarrayList;
    static int[] arrayRemover(int[] myArray,int index) {
        List<Integer>arrayList = IntStream.of(myArray) .boxed().collect(Collectors.toList()); 
        arrayList.remove(2); 
        returnarrayList = null;
        return returnarrayList.stream().mapToInt(Integer::intValue).toArray(); 
    }
public static void main(String[] args)  { 
    int myArray[]= {1,2,3,4};
    int index=2;
    myArray=arrayRemover(myArray,index);
    System.out.println(Arrays.toString(myArray));
}
}

这是显示的错误

enter image description here

我想从数组中删除一个元素。我知道 java 中没有直接的方法可以从数组中删除元素。但是存在几种间接方法。在那里,我尝试使用arraylist删除元素。我没有得到结果。其中有什么错误?我需要改变什么?

Java 数组 列表 ArrayList 整数

评论

2赞 Alias Cartellano 7/23/2023
尝试查看从数组中删除元素(Java)。
0赞 Amalshanth 7/23/2023
为此道歉,我确实纠正了它

答:

3赞 Elliott Frisch 7/23/2023 #1

您有该行,然后尝试在下一行调用方法。我只会创建一个新的数组(因为您正在删除一个元素);然后复制 from to 和 from to 新数组。喜欢returnarrayList = null;nullmyArray.length - 10indexindex + 1

static int[] arrayRemover(int[] myArray, int index) {
    if (myArray == null || myArray.length < 2) {
        return myArray;
    }
    int[] r = new int[myArray.length - 1];
    System.arraycopy(myArray, 0, r, 0, index);
    System.arraycopy(myArray, index + 1, r, index, myArray.length - index - 1);
    return r;
}
0赞 Todd 7/23/2023 #2

如果您使用的是 java 8 或更高版本,我已经成为此类流的忠实粉丝。它折叠了许多样板代码,通常只有一行。这是我整理的一个工作单元测试,演示了如何使用流来执行此操作。

import java.io.IOException;
import java.util.Arrays;
import java.util.stream.IntStream;

这些是测试方法中代码的导入。如果您实际上要重新创建测试本身,请将方法放在一个类中,并包含您喜欢的单元测试框架(在我的情况下)。import org.junit.jupiter.api.Test;

@Test
public void testRemoveArrayElement() throws IOException {
    int[] myArray = new int[] { 10, 20, 30, 40, 50, 60 };
    int indexToRemove = 3;

    System.out.println(Arrays.toString(myArray));    // Prints: [10, 20, 30, 40, 50, 60]
    int[] myFilteredArray = IntStream.range(0, myArray.length).filter(i -> i != indexToRemove).map(i -> myArray[i]).toArray();
    System.out.println(Arrays.toString(myFilteredArray));    // Prints: [10, 20, 30, 50, 60]
}

评论

0赞 Amalshanth 7/23/2023
无法访问显示包组织
0赞 Todd 7/24/2023
奇怪。也许您正在重新创建整个单元测试?如果是这样,我已经更新了我的答案,包括一些导入和关于测试本身的一句话。真正回答这个问题的 Java 流代码行是 100% 标准 Java(Java 8 或更高版本)。